应用中心移动身份验证中的OAuthException错误

时间:2012-10-10 15:55:20

标签: server-side facebook-authentication facebook-oauth

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

{
    "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
    }
}

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

我正在调用的网址是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是我在应用设置中在移动网站网址字段中设置的值。

从网络应用中心进行身份验证即可。

我不明白重定向uri形式的移动设备有什么问题......

你能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

我发现这篇文章引用需要在URI

上添加一个斜杠

redirect_uri error in oauth for facebook django app

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

重定向适用于应用中心身份验证的网址

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)