Class: GoogleClientLogin::GoogleAuth
- Inherits:
-
Object
- Object
- GoogleClientLogin::GoogleAuth
- Defined in:
- lib/google_client_login.rb
Overview
Use this Class to get an auth-token
Constant Summary collapse
- LoginError =
Base Exception class
Class.new Exception
- DEFAULTS =
{ :accountType => 'HOSTED_OR_GOOGLE' , :source => 'companyName-applicationName-versionID', :service => 'service-identifier' }
Instance Attribute Summary collapse
-
#auth ⇒ Object
readonly
Returns the value of attribute auth.
-
#captcha_url ⇒ Object
readonly
Returns the value of attribute captcha_url.
-
#lsid ⇒ Object
readonly
Returns the value of attribute lsid.
-
#sid ⇒ Object
readonly
Returns the value of attribute sid.
Instance Method Summary collapse
-
#authenticate(username, password, captcha_response = nil) ⇒ Object
authenticate a user, which sets the auth, sid and lsid instance_variables if you provide a block, it will be called with a captcha url if google forces you to answer the captcha.
-
#initialize(arghash = {}) ⇒ GoogleAuth
constructor
specify the :service, :source and optionally :accountType.
Constructor Details
#initialize(arghash = {}) ⇒ GoogleAuth
specify the :service, :source and optionally :accountType
- :service
-
the service identifier, check the google api documentation.
- :source
-
the name of your application. String should be in the form “companyName-applicationName-versionID”.
- :accountType
-
one of the following values: “GOOGLE”, “HOSTED”, “HOSTED_OR_GOOGLE” (default if none given)
45 46 47 |
# File 'lib/google_client_login.rb', line 45 def initialize(arghash = {}) @options = DEFAULTS.merge arghash end |
Instance Attribute Details
#auth ⇒ Object (readonly)
Returns the value of attribute auth.
33 34 35 |
# File 'lib/google_client_login.rb', line 33 def auth @auth end |
#captcha_url ⇒ Object
Returns the value of attribute captcha_url.
33 34 35 |
# File 'lib/google_client_login.rb', line 33 def captcha_url @captcha_url end |
#lsid ⇒ Object (readonly)
Returns the value of attribute lsid.
33 34 35 |
# File 'lib/google_client_login.rb', line 33 def lsid @lsid end |
#sid ⇒ Object (readonly)
Returns the value of attribute sid.
33 34 35 |
# File 'lib/google_client_login.rb', line 33 def sid @sid end |
Instance Method Details
#authenticate(username, password, captcha_response = nil) ⇒ Object
authenticate a user, which sets the auth, sid and lsid instance_variables if you provide a block, it will be called with a captcha url if google forces you to answer the captcha. Make sure you return the answer in the block.
if no block is given, this will raise a CaptchaRequired error. you can rescue them and show the url via the captcha_url method.
you can then call authenticate and as 3rd parameter you provide the captcha answer.
all Exceptions this raises are subclasses of ClientLogin::LoginError. so make sure you handle them.
This is a list of all the possible errors and their meaning Error code:: Description
- BadAuthentication
-
The login request used a username or password that is not recognized.
- NotVerified
-
The account email address has not been verified. The user will need to access their Google account directly to resolve the issue before logging in using a non-Google application.
- TermsNotAgreed
-
The user has not agreed to terms. The user will need to access their Google account directly to resolve the issue before logging in using a non-Google application.
- CaptchaRequired
-
A CAPTCHA is required. (A response with this error code will also contain an image URL and a CAPTCHA token.)
- Unknown
-
The error is unknown or unspecified; the request contained invalid input or was malformed.
- AccountDeleted
-
The user account has been deleted.
- AccountDisabled
-
The user account has been disabled.
- ServiceDisabled
-
The user’s access to the specified service has been disabled. (The user account may still be valid.)
- ServiceUnavailable
-
The service is not available; try again later.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/google_client_login.rb', line 74 def authenticate(username, password, captcha_response = nil) @options[:Email], @options[:Passwd] = username, password # set logincaptcha, captchatoken will already be set @options[:logincaptcha] = captcha_response if captcha_response parse_response perform_request rescue CaptchaRequired if block_given? @options[:logincaptcha] = yield captcha_url retry else raise CaptchaRequired end end |