2015-11-27 1 views
0

Tentative d'authentification à l'aide de Google sur iOS avec un serveur backend, code utilisé pour travailler avec d'anciennes bibliothèques clientes google.Erreur lors de la récupération du jeton d'accès OAuth2 - invalid_grant. MAIS il est VALIDE

$client = new Google_Client(); 
$oauth2 = new Google_Service_Oauth2($client); 
$client->setApplicationName('MyApp'); 
$client->setClientId($google_config["clientId"]); 
$client->setClientSecret($google_config["clientSecret"]); 
$client->setRedirectUri(""); 
$client->setDeveloperKey($google_config["developerKey"])); 
Log::error("Google/authcode", $request->get('token')); 
if (! isset($_SESSION['access_token'])) { 
    try { 
    $client->authenticate($request->get('token')); 
    } .... THROWS exception: Error fetching OAuth2 access token, message: 'invalid_grant: 

Tentative de valider un jeton contre:

https://www.googleapis.com/oauth2/v1/tokeninfo?id_token= https://www.googleapis.com/oauth2/v2/tokeninfo?id_token= https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=

tous les travaux montre avec succès ce jeton est valide.

EDIT: JUSTE TROUVÉ après avoir ajouté appel verifyIdToken, que: émetteur non valide, https://accounts.google.com = accounts.google.com semble que c'est la raison pour laquelle je reçois un échec. Je devine que iOS sdk vs PHP configure les choses différemment? Ou peut-être ce n'est pas pertinent et est supposé que ce n'est pas l'autorisation du serveur à partir de l'appareil iOS. Puisque si je continue à changer les choses sur le code côté serveur, c'est-à-dire https://accounts.google.com, je me trompe d'erreur de destinataire, ce qui est logique puisque j'utilise un tokenid obtenu par le client iOS pour autoriser le serveur.

La version plus ancienne de l'application iOS fonctionne également. Mais le jeton est complètement différent bien que valide bien aussi bien. Toute aide est grandement appréciée.

Répondre

0

Je pense que j'ai mal compris la documentation. Pour autoriser le serveur il faut passer googleUser.serverAuthCode de

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)googleUser 
withError:(NSError *)error { .... 

Si la validation seul serveur back-end avec autorisé sur l'utilisateur côté iOS googleUser.authentication.accessToken au serveur qui à son tour aurait besoin d'être validé ou sur analysable le serveur pour obtenir des e-mails et d'autres données.