对于优步登录,我正在关注Android手机端的“单点登录”登录机制,但由于刷新令牌,我遇到了问题。刷新令牌 (我们在AccessToken类中得到的30个字符数)我们将它传递给服务器以刷新访问令牌。但是Server无法重新生成 使用以下命令使用此刷新令牌访问令牌:
curl -F 'client_secret=CLIENT-SERCRET' \
-F 'client_id=CLIENT_ID' \
-F 'grant_type=refresh_token' \
-F 'refresh_token=REFRESH_TOKEN_FROM_ANDROID' \
https://login.uber.com/oauth/v2/token
并收到错误:
{“error”:“invalid_grant”}
访问令牌需要在服务器端获取相关的详细信息。
我们坚持这个问题,任何帮助将不胜感激。 提前谢谢。
以下是Login回调的代码片段,我们从中获取刷新令牌:
private class UberLoginCallback implements LoginCallback {
@Override
public void onLoginCancel() {
}
@Override
public void onLoginError(@NonNull AuthenticationError error) {
}
@Override
public void onLoginSuccess(@NonNull AccessToken accessToken) {
String accessToken = accessToken.getToken()
String refreshToekn = accessToken.getRefreshToken()
/*Passing this refresh token on server side but doesn't work as expected*/
}
@Override
public void onAuthorizationCodeReceived(@NonNull String authorizationCode) {
Log.d(TAG, "Authorization Code : " + authorizationCode);
}
}
答案 0 :(得分:1)
如果在尝试获取新的access_token时遇到{“error”:“invalid_grant”},则表示正在使用的刷新令牌已过期或已变为无效。与您尝试从onLoginSuccess方法获取刷新令牌的情况相关 - AccessToken对象当前存在问题 - 因为AccessToken有一个空刷新令牌参数。我们目前正在努力解决这个问题。