我正在尝试从移动设备的应用中心进行身份验证,但是当我尝试为访问令牌交换代码参数时出现此错误:
{
"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形式的移动设备有什么问题......
你能帮帮我吗?
答案 0 :(得分:2)
我发现这篇文章引用需要在URI
上添加一个斜杠答案 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)