无法使用服务器端的Uber刷新令牌重新生成Uber访问令牌

时间:2017-06-09 07:17:24

标签: android curl uber-api refresh-token

对于优步登录,我正在关注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);
    }
}

1 个答案:

答案 0 :(得分:1)

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