0

J'essaie de construire ci-dessous:incapable d'échanger auth jeton avec jeton d'accès - rediriger uri missmatch

enter image description here

en suivant: this étapes

cependant, je continue à recevoir rediriger missmatch uri quand j'ai essayé pour échanger le code d'autorisation (donné par mon application mobile) au serveur de google - que je ne pourrais pas comprendre parce que techniquement il n'y a aucun uri de redirection requis pour mon cas de flux ...

voici le détail s:

dans le client Android:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
     .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER)) 
     .requestServerAuthCode(serverClientId, false) 
     .build(); 
/**** bla.... ****/ 
GoogleSignInAccount acct = result.getSignInAccount(); 
String authCode = acct.getServerAuthCode(); 
/**** android app will send this authCode to my server ****/ 
/**** sample authCode: 4/Jny2Mxxx3x09sy4pqY3ZAwSTEz8rw2xxxxC-4VxxxxM 

dans mon serveur principal:

try: 
    # i receive authCode correctly from android app. 
    # and use authCode to exchange to Access Token to google server as below: 
    credentials = client.credentials_from_clientsecrets_and_code(
        app.config.get('GG_APP_SECRET'), 
        ['https://www.googleapis.com/auth/plus.me', 'profile', 'email'], 
        authCode) 
except Exception as e: 
    log.info('>>>>> I always receive: redirect uri missmatch here: %s <<<<<', e) 
    return generate_response(code=400, error=False, type='Fail', message=str(e)) 

c'est boucle de mon serveur principal:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
    "authCode": "4/HP_cP_t70pgBrxxx7sjzCil7kaUHkxxxerdkMxxxrRg" \ 
}' 'http://localhost:5005/api/user/register/gg' 

ceci est mes paramètres de la console:

enter image description here

Questions:

est le serverClientId dans le client Android suppose être le clientID de l'image ci-dessus?

quel est l'uri de redirection que je devrais mettre dans google console ci-dessus?

Que devrais-je définir/configurer pour mon URI de redirection? ou y a-t-il des paramètres spécifiques que je dois faire?

+0

envisager d'appeler la Les points de terminaison http directement plutôt que d'essayer de comprendre ce que fait la bibliothèque. Il suffit de deux POSTS http simples que vous pouvez voir dans le oauthplayground. – pinoyyid

+0

Merci, mais le principal problème ici est pourquoi google m'a dit que Missel Uri? Et je ne sais pas ce qui est redirigé uri que je devrais mettre puisque pour mon cas flux hybride, il n'y a pas de redirection uri. – AnD

+0

que diriez-vous de coller votre code afin que nous puissions voir ce que vous essayez de faire – pinoyyid

Répondre

0

Ok je vais lui,

si vous voyez this

vous trouvé:

def credentials_from_clientsecrets_and_code(filename, scope, code, 
              message=None, 
              redirect_uri='postmessage', 
              http=None, 
              cache=None, 
              device_uri=None): 

et vous vous rendez compte que 'PostMessage' redirect_uri = qui dans mon cas je n'ai pas après message.

donc ce que je fais est de faire correspondre ce redirect_uri avec authorize redirect uri que j'ai dans la console google

donc pour mon cas dans ma question ci-dessus, je change mon code python à:

credentials = client.credentials_from_clientsecrets_and_code(
        app.config.get('GG_APP_SECRET'), 
        ['https://www.googleapis.com/auth/plus.me', 'profile', 'email'], 
        authCode, redirect_uri='https://developers.google.com/oauthplayground')