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页面的应用程序设置中打开了沙箱。 为什么错误页面是如此的愚蠢是超出我的。

  1. 在Facebook开发者设置中: https : //developers.facebook.com ,编辑您的应用程序设置。
  2. select左侧“设置”下的“高级”标签。
  3. 确保“沙箱模式”未启用。

当我的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处理程序链接。