Facebook 授权 w/permissions 请求产生“页面未找到”

Posted

技术标签:

【中文标题】Facebook 授权 w/permissions 请求产生“页面未找到”【英文标题】:Facebook authorize w/permissions request yield "Page Not Found" 【发布时间】:2011-11-25 01:38:15 【问题描述】:

在过去几周的某个地方,ios 中的授权 Facebook 调用失败并显示“未找到页面”。对于尚未安装应用程序的任何用户或应用程序的权限已更改且用户必须批准附加权限的用户都会发生这种情况。无论 Facebook 应用程序处理用户身份验证、Safari 还是弹出对话框,都会发生这种情况。全部重定向到“找不到页面”页面。

通过调试器挖掘,我发现登录屏幕的初始 URL 请求是(app id 替换“[app_id]”):

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(我假设用户没有足够的权限):

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-safari&from_login=1

我检查了 Xcode 中列出的 Bundle ID 是否与 Facebook 中我的应用设置列出的相同。

由于权限页面未显示,新用户无法添加应用。以前可以运行的旧版本的应用程序也以同样的方式失败。可能是什么问题呢?

【问题讨论】:

好的,它必须与应用程序的 FB 设置有关。但不知道是什么。我已经设置了 FB DemoApp 以使用我失败的应用程序的 app_id 并且它失败了(所以我知道它不一定是我的代码)。然后我将它设置为我不再开发的另一个应用程序的应用程序 ID;它有效!我无法说出两种不同配置之间的区别。啊! 【参考方案1】:

好吧,我觉得有点傻。

问题是我在 Facebook 页面的应用设置中打开了沙盒。为什么错误页面如此迟钝,我无法理解。

    在 Facebook 开发者设置中:https://developers.facebook.com,编辑您的应用设置。 选择左侧“设置”下的“高级”标签。 确保未启用“沙盒模式”。

【讨论】:

这对我来说也是个老毛病。在沙盒模式下,只有您添加到您的开发团队的用户才能访问该应用,否则它将 reposrt: content not found。 啊,我也是这个问题,虽然我是应用管理员。我认为这是因为我在 android 上登录 facebook 之后创建了 facebook 应用程序。解决方法:在安卓上退出facebook应用,重新登录。【参考方案2】:

当我的 App ID 在 Info Plist 中不正确时,我遇到了同样的问题。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb305639062848xxx</string>
        </array>
    </dict>
</array>

我发现,必须放的不是 Apple App ID,而是 Facebook App ID。 (一般在你的Facebook开发者网页的应用设置中,在App Name下有App ID和App Secret)

最后 3 个数字被 xxx 隐藏了。

【讨论】:

【参考方案3】:

如果您发布的链接正是您的应用程序中的链接,则“redirect_uri”参数缺少字母“e”。 “fbconnect”也是如此。

http://www.facebook.com/dialog/permissions.request?_path=permissions.request&app_id=[appid]&redirct_uri=fb[appid]%3A%3F%3Fauthorize&sdk=2&display =touch&type=user_agent&fbocnnect=1&perms=user_location%2Cuser_relationships%2Cemail%2Cpublish_stream%2Coffline_access&sso=iphone-safari&from_login=1

此外,您应该确保您的[appid] 是正确的,并且fb[appid]%3A%3F%3Fauthorize 是您应用程序的正确FB 处理程序链接。

【讨论】:

不,我必须转录它,所以这是一个错字。您是否能够授权对您的 iOS 应用进行新的使用? 以前的代码可以正常工作。我作为授权用户已经测试了很长时间,并且没有注意到它何时停止工作。第二个 URL 由 Facebook 生成,这是我作为需要允许应用权限的用户登录的结果。第一个 URL 由 iOS SDK 生成,并继续适用于已授予应用权限的用户。 @wrlee:不,我只为网站集成了 Facebook,但 OAuth 流程应该是一样的。我检查了网址,它适用于我的应用程序。关于 Facebook 设置的更改,我注意到 FB 将强制使用 https。对你的申请有影响吗?

以上是关于Facebook 授权 w/permissions 请求产生“页面未找到”的主要内容,如果未能解决你的问题,请参考以下文章

Facebook已经授权回调问题

如何通过本机Facebook授权登录Facebook?

Parse + Facebook 授权:已为 <facebook> 注册回调:com.parse.ParseFacebookUtils

Facebook 聊天返回“未授权”

Facebook登录给我已经授权这个应用程序每次ios

如何获取 Facebook 登录令牌,在“您已经授权 APPName”Facebook 中单击“确定”按钮后