1

对于 Uber 登录,我在 Android 手机端遵循“单点登录”登录机制,但由于刷新令牌,我遇到了问题。我们在 AccessToken 类中获得的刷新令牌(30 个字符数)我们将其传递给服务器以刷新访问令牌。但是,服务器无法使用以下刷新令牌重新生成访问令牌:

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

并得到错误:

{“错误”:“invalid_grant”}

需要访问令牌才能在服务器端获取与游乐设施相关的详细信息。

我们被这个问题困住了,我们将不胜感激。提前致谢。

以下是登录回调的代码片段,我们从中获取刷新令牌:

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);
    }
}
4

1 回答 1

2

如果您在尝试获取新的 access_token 时收到 {"error": "invalid_grant"} 这意味着正在使用的刷新令牌已过期或无效。与您尝试从 onLoginSuccess 方法获取刷新令牌的情况相关 - AccessToken 对象当前存在问题 - 因为 AccessToken 有一个空的刷新令牌参数。我们目前正在努力解决该问题。

于 2017-06-15T21:07:35.747 回答