Code Monkey home page Code Monkey logo

yt-auth's Introduction

Authenticate users with their Google account

Yt::Auth lets you easily authenticate users of your website by means of their Google-based email address.

With Yt::Auth, it is easy to limit access to your app to a few users without the need for them to create a username and password.

The source code is available on GitHub and the documentation on RubyDoc.

Build Status Coverage Status Dependency Status Code Climate Online docs Gem Version

Yt::Auth.url_for

With the url_for class method, you can obtain a URL where to redirect users who need to authenticate with their Google account in order to use your application:

redirect_uri = 'https://example.com/auth' # REPLACE WITH REAL ONE
scope = %i(yt-analytics.readonly youtube)
Yt::Auth.url_for(redirect_uri: redirect_uri, scope: scope, force: true)
 # => https://accounts.google.com/o/oauth2/auth?client_id=...&scope=email&redirect_uri=https%3A%2F%2Fexample.com%2Fauth&response_type=code

Yt::Auth.create

After users have authenticated with their Google account, they will be redirected to the redirect_uri you indicated, with an extra code query parameter, e.g. https://example.com/auth?code=1234

With the create class method, you can create an instance for that authentication:

redirect_uri = 'https://example.com/auth' # REPLACE WITH REAL ONE
code = 'dfwe7r9djd234ffdjf3009dfknfd98re' # REPLACE WITH REAL ONE
auth = Yt::Auth.create(redirect_uri: redirect_uri, code: code)
 # => #<Yt::Auth:0x007fe61dā€¦>

Yt::Auth#email

Once you have an instance of Yt::Auth, you can obtain the verified email of the authenticated user:

auth.email
 # => "[email protected]"

Yt::Auth#access_token

Once you have an instance of Yt::Auth, you can also obtain the access token of the authenticated user:

auth.access_token
 # => "ya29.df8er8e9r89er"

Yt::Auth#refresh_token

Once you have an instance of Yt::Auth, you can also obtain the refresh token of the authenticated user:

auth.refresh_token
 # => "sdf7f7erre98df"

Yt::Auth.find_by

If you already know the refresh token of a Google account, you can obtain its complete authentication object:

auth = Auth.find_by(refresh_token: "sdf7f7erre98df")
auth.email
 # => "[email protected]"

Yt::HTTPError

Yt::HTTPError will be raised whenever something goes wrong during the authentication process. The message of the error will include the details:

redirect_uri = 'https://example.com/auth' # REPLACE WITH REAL ONE
code = 'this-is-not-a-valid-code'
Yt::Auth.new(redirect_uri: redirect_uri, code: code).email
 # => Yt::HTTPError: Invalid authorization code.

How to contribute

Contribute to the code by forking the project, adding the missing code, writing the appropriate tests and submitting a pull request.

In order for a PR to be approved, all the tests need to pass and all the public methods need to be documented and listed in the guides. Remember:

  • to run all tests locally: bundle exec rspec
  • to generate the docs locally: bundle exec yard
  • to list undocumented methods: bundle exec yard stats --list-undoc

yt-auth's People

Contributors

claudiob avatar kangkyu avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.