1

我正在尝试从移动设备的应用中心进行身份验证,但是当我尝试为访问令牌交换代码参数时出现此错误:

{
    "error": {
        "message": "Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request",
        "type": "OAuthException",
        "code": 100
    }
}

身份验证令牌参数采用查询字符串格式,因为我的应用程序使用服务器端身份验证。

我正在调用的 url 是https://graph.facebook.com/oauth/access_token并且我发送到的 redirect_uri 参数如下所示:

http://www.example.com?ref=app_directory&code=codefromfb&fb_source=appcenter_mobile&fb_appcenter=1

www.example.com 是我在应用设置的移动网站 url 字段中设置的值。

来自应用程序中心的网络身份验证没问题。

我不明白重定向 uri 表单移动设备有什么问题......

你可以帮帮我吗?

4

3 回答 3

2

我发现这篇文章引用需要在 URI 上使用斜杠

facebook django应用程序的oauth中的redirect_uri错误

于 2012-12-03T05:40:32.617 回答
1

我有同样的错误。我无法解决它,但找到了一种解决方法:我忽略了 Facebook 自动发送到我的移动网络应用程序的代码参数;相反,我自己请求代码,然后使用与请求代码相同的 redirect_uri 交换 access_token 的代码。

为了更轻松地应用解决方法,在您的应用程序 > 设置 > 权限中,您可以将 Auth Token Parameter 从查询字符串更改为 URI 片段。然后 Facebook 不会自动向你发送代码参数——你必须提出请求——这就是需要的。

另一种解决方法是使用 URI 片段实现客户端身份验证流程或在客户端解析 URI 片段并将 access_token 作为参数发送到服务器。我还没有测试这种方法。

于 2012-11-06T12:04:00.963 回答
1

用于应用中心身份验证的重定向 URL

desktop:  http://www.example.com/?fb_source=appcenter&fb_appcenter=1
mobile:   http://www.example.com/?ref=app_directory
          (part fb_source=appcenter_mobile&fb_appcenter=1 should be excluded for mobile, I think that it's FB bug)

在哪里:

http/https      - depends on request
www.example.com - you should use exactly same string as saved at application settings (https://developers.facebook.com/apps/YOUR_APPLICATION_NUMBER/summary) Domain name is case sensitive for Facebook (also bug)
于 2013-03-04T00:34:44.473 回答