我正在尝试在我的 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 参数提供以生成访问令牌,但无济于事。
知道我可能做错了什么吗?