我尝试在下面构建:
通过以下方式:this步骤
但是,当我尝试将auth代码(由我的移动应用程序提供)交换到谷歌服务器时,我一直收到重定向uri missmatch - 我无法理解,因为从技术上讲,我的流量案例不需要重定向uri ...
以下是详细信息:
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
在我的后端服务器中:
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))
这是我后端服务器的卷曲:
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'
这是我的控制台设置:
问题:
是android客户端中的serverClientId,假设是上面图像的clientID?
我应该在谷歌控制台上面放置什么重定向uri?
我应该为我的重定向uri设置/配置什么?或者我需要做哪些具体设置?
答案 0 :(得分:0)
好的,我去了,
如果您看到this
你会发现:def credentials_from_clientsecrets_and_code(filename, scope, code,
message=None,
redirect_uri='postmessage',
http=None,
cache=None,
device_uri=None):
你意识到redirect_uri ='postmessage'在我的情况下我没有发布消息。
所以我要做的是将redirect_uri
与我在谷歌控制台中的authorize redirect uri
相匹配
所以对于我在上面的问题中的情况,我将我的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')