2017-07-11 3 views
0

Ich habe eine Anwendung Ruby on Rails und ich versuche, meine App in Google zu autorisieren, aber ich bekomme immer uninitialized constantautorisieren Google OAuth2

Ich versuchte Google::Auth::Stores::TokenStore und Google::APIClient::InstalledAppFlow

I Proben gefolgt Thesen zu verwenden https://github.com/google/google-auth-library-ruby#example-command-line und https://developers.google.com/youtube/v3/code_samples/ruby?hl=pt-br#upload_a_video

Eine Verwendung googleauth und andere google-api-client.

In meinem Gemfile

gem 'google-api-client', '0.8.2', require: 'google/api_client' gem 'googleauth'

In meinem Code

Mit erstem Beispiel

def authorization 
    client_id = Google::Auth::ClientId.from_file './client_secrets.json' 
    scope = ['SCOPE'] 
    token_store = Google::Auth::Stores::FileTokenStore.new(file: './tokens.yaml') 
    authorizer = Google::Auth::UserAuthorizer.new(client_id, scope, token_store) 
    credentials = authorizer.get_credentials(user_id) 
    if credentials.nil? 
     url = authorizer.get_authorization_url(base_url: OOB_URI) 
     puts "Open #{url} in your browser and enter the resulting code:" 
     code = gets 
     credentials = authorizer.get_and_store_credentials_from_code(
     user_id: user_id, code: code, base_url: OOB_URI) 
    end 
end 

zweites Beispiel Mit

def authorization 
    file_storage = Google::APIClient::FileStore.new(oauth2) 
    if file_storage.authorization.nil? 
     client_secrets = Google::APIClient::ClientSecrets.load 
     flow = Google::APIClient::InstalledAppFlow.new(
     client_id: client_secrets.client_id, 
     client_secret: client_secrets.client_secret, 
     scope: [YOUTUBE_UPLOAD_SCOPE] 
     ) 
     client.authorization = flow.authorize(file_storage) 
    else 
     client.authorization = file_storage.authorization 
    end 
end 
+0

Was ist die vollständige Fehlermeldung? Auf welcher Linie tritt es auf? Ist es für beide Authentifizierungsflüsse dasselbe? – whodini9

+0

der Fehler ist 'nicht initialisierte Konstante Google :: Auth :: Stores :: TokenStore' und' nicht initialisierte Konstante Google :: APIClient :: InstalledAppFlow' Der Fehler wird ausgelöst, wenn ich diese Klassen aufrufen, weil es nicht gefunden, aber Ich habe den Edelstein installiert. –

+0

Benötigen Sie diese in der Datei/Controller, wo "Autorisierung" definiert ist? – whodini9

Antwort

1

Ich habe die Lösung mit dem zweiten Fall gefunden. Als ich das Juwel gem 'google-api-client', '>0.7', require: 'google/api_client' in Gemfile hinzugefügt dachte ich, dass alles getan wurde, aber Google::APIClient::FileStorage und Google::APIClient::InstalledAppFlow müssen mehrere Dateien benötigen, so in der Datei werden Sie Thesen verwenden Jungs fügen Sie diese Zeilen

require 'google/api_client/auth/file_storage' 
require 'google/api_client/auth/installed_app' 
Verwandte Themen