Facebook授权w /权限请求收益“找不到页面”
在过去的几个星期的某个地方,授权Facebook的iOS调用失败,出现“Page Not Found”。 对于没有安装应用程序的用户,或者应用程序的权限已经更改,用户必须批准其他权限,才会发生这种情况。 无论Facebook应用程序处理用户身份validation还是Safari或popup对话框,都会发生这种情况。 所有redirect到“页面未find”页面。
通过debugging器挖掘,我发现初始URL请求(app idreplace“[app_id]”)的login屏幕:
https://m.facebook.com/dialog/oauth?type=user_agent&display=touch&redirect_uri=fb[app_id]%3A%2F%2Fauthorize&sdk=2&scope=user_location%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&client_id=[app_id]
以下url正在通过login尝试(我假设由用户没有足够的权限的URL):
http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=[appid]&redirect_uri=fb[appid]%3A%3F%3Fauthorize&sdk=2&display=touch&type=user_agent&fbconnect=1&perms=user_location%2Cuser_relationships% 2Cemail%2Cpublish_stream%2Coffline_access&SSO = iphone-狩猎&from_login = 1
我已经检查过,Xcode中列出的Bundle ID与我在Facebook中的应用程序设置列出的相同。
由于未显示权限页面,所以新用户无法添加应用程序。 过去我的应用程序的旧版本也以相同的方式失败。 可能是什么问题呢?
好吧,我感觉有点愚蠢。
问题是我在Facebook页面的应用程序设置中打开了沙箱。 为什么错误页面是如此的愚蠢是超出我的。
- 在Facebook开发者设置中: https : //developers.facebook.com ,编辑您的应用程序设置。
- select左侧“设置”下的“高级”标签。
- 确保“沙箱模式”未启用。
当我的App ID在Info Plist中不正确时,我遇到了同样的问题。
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>fb305639062848xxx</string> </array> </dict> </array>
我发现,不是苹果应用程序ID必须放在那里,而是Facebook应用程序ID。 (一般在你的应用程序设置在Facebook开发人员的网页上,在应用程序名称下有应用程序ID和应用程序的秘密)
有3个最后的数字被xxx隐藏。
如果您发布的链接恰好是您应用程序中的链接,则“redirect_uri”参数缺less字母“e”。 “fbconnect”也是如此。
%3A%3F%3Fauthorize&sdk = 2&display = touch&type = user_agent& fbocnnect = 1&perms = user_location%3F%3Fauthorization&sdk = 2&display = touch&type = user_agent& 2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&SSO = iphone-狩猎&from_login = 1
此外,你应该确保你的[appid]
是正确的,并且fb[appid]%3A%3F%3Fauthorize
是你的应用程序的正确的FB处理程序链接。