Rails, OmniAuth, google_oauth2, google-api-client, Moments.insert ... 401 nicht autorisiert ... warum?

9

Ich konnte online keine Antwort finden - abgesehen von der Schaltfläche "Google+ anmelden", die ich an dieser Stelle nicht verwenden möchte, weil ich nicht in Javascript einsteigen möchte, wenn ich muss nicht.

Ich habe eine Ruby-on-Rails-Anwendung (ruby v1.9.3, rails v3.2.13), in der ich OmniAuth angeschlossen habe und den Juwel google_oauth2 für die Integration in Google + verwende.

Mein einfaches Ziel ist es, einem Nutzer die Authentifizierung bei Google+ zu ermöglichen, Zugriff auf mein Google API-Projekt zu gewähren und dann mit dem Google-API-Client-Juwel einen Moment im Tresor des Google+ Nutzers zu posten.

Ich habe mein Google API-Projekt bereits eingerichtet, OAuth 2.0 für Webanwendungen erstellt und den Google+ API-Dienst aktiviert.

Ich habe OmniAuth mit dem folgenden Provider eingerichtet und ich habe die Option request_visible_actions hinzugefügt, damit ich posten kann (ich denke, das ist korrekt, aber ich habe es noch nie aus Code-Beispielen gesehen, die ich online angeschaut habe ... ):

%Vor%

Wenn ich meinen Nutzer an / auth / google_oauth2 weiterleite, sendet er den Nutzer zur Autorisierung meiner App an Google+, und wenn der Nutzer dies genehmigt, kehrt er zu meinem Rückruf zurück, wo ich auf request.env ["omniauth.auth"] zugreifen kann. und es enthält alle Informationen, die ich erwarten würde, einschließlich Tokens, E-Mail-Adresse usw. Ich speichere das access_token von auth ["credentials"] ["token"].

So weit, so gut, oder?

Wenn ich versuche, den Moment mit dem folgenden Code zu posten, erhalte ich eine Ausnahme, die auf einen nicht autorisierten 401-Fehler hinweist.

%Vor%

Ich habe auch versucht,

zu ersetzen %Vor%

mit

%Vor%

Aber kein Glück.

Ich denke, das Problem hat entweder etwas mit

zu tun
  1. OmniAuth gibt die request_visible_actions nicht korrekt an Google aus
  2. Ich setze das Token im Google :: APIClient-Objekt nicht richtig

Ich bin so weit gekommen mit den folgenden Ressourcen, aber ich bin offiziell festgefahren:

Irgendwelche Ideen würden geschätzt werden!

    
sadiq 09.05.2013, 02:12
quelle

3 Antworten

3

Hier ist mein Arbeitscode von der Web-App mit 'omniauth-google-oauth2' zusammen mit 'google-api-client'. Dieser Beispielcode verwendet die Kalender-API, aber ich denke, es wird für Sie funktionieren.

%Vor%     
cthulhu 23.11.2013 14:39
quelle
0

Haben Sie sich in der API-Konsole als Web-Anwendung oder installierte Anwendung registriert? Ich denke für Ihren Fall müssen Sie die installierte Anwendung auswählen, damit das Token gültig ist, wenn der Benutzer nicht online ist.

    
Nuno Silva 22.06.2013 16:52
quelle
0

Versuchen Sie Ссылка mit nur plus.login zu ändern. Es funktioniert für mich mit dem gleichen Setup.

    
cicloon 26.06.2013 08:33
quelle