0

我正在尝试在我的 Android 应用程序上实现 Foursquare Native OAuth。我遵循了foursquare-oauth-library 示例并成功为用户生成了一个access_token。

但是,按照 Foursquare 的建议,我的应用程序的秘密不存储在应用程序的任何位置,而是执行服务器端身份验证代码/access_token 交换,我正在我的服务器上进行调用,但每次这样做时都会出现 redirect_uri_mismatch 错误。

我正在获取示例应用程序中指定的身份验证代码:

AuthCodeResponse codeResponse = FoursquareOAuth.getAuthCodeFromResult(resultCode, data);

之后,我将该身份验证代码从我的 Android 应用程序发送到我的 Rails 服务器。我假设应该在https://developer.foursquare.com/overview/auth#code的第 3 步之后获得 access_token,但我得到了 redirect_uri_mismatch 响应。

我在 Rails 服务器上使用 Nestful 向 Foursquare 发送我对 access_token 的请求:

response = Nestful.post 'https://foursquare.com/oauth2/access_token',
        client_id: ENV_CONFIG['foursquare_client_id'],
        client_secret: ENV_CONFIG['foursquare_client_secret'],
        grant_type: 'authorization_code',
        redirect_uri: ENV_CONFIG['redirect_uri'],
        code: params[:code]
@token = response['access_token']

回应是:

{"error":"redirect_uri_mismatch"}

我已经在 Foursquare 上仔细检查了应用程序的配置,在那里我还设置了我生成的 Android 哈希键,甚至尝试将其作为 redirect_uri 参数提供以生成访问令牌,但无济于事。

知道我可能做错了什么吗?

4

1 回答 1

2

事实证明,给定的代码检查了最初提供的 redirect_uri。由于一开始没有指定,因此不应将 redirect_uri 参数传递给 code/access_token 交换调用。

于 2013-11-05T21:55:41.430 回答