Project

yt-auth

0.01
No commit activity in last 3 years
No release in over 3 years
Yt::Auth makes it easy to authenticate users to any web application by means of their Google account.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.14
~> 0.8.20
~> 0.2.4
~> 12.0
~> 3.5
~> 0.9.8

Runtime

>= 1.5.6
>= 0.1.3
 Project Readme

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
 # => "user@example.com"

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
 # => "user@example.com"

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