安装Facebook应用程序(iOS)时身份验证失败

安装Facebook应用程序(iOS)时身份验证失败,ios,facebook,connect,Ios,Facebook,Connect,我刚开始发现Facebook Connect身份验证存在问题。如果我安装了iOS应用程序的3.4.4版,则会调用我的代理的fbDidNotLogin方法,并显示错误消息“用户拒绝了您的请求”。当我卸载FB应用程序时,身份验证工作正常。还有人看到了吗?有人知道我如何绕过这个bug吗 以下是我对Facebook对象的调用: [[app facebook] authorize:[NSArray arrayWithObjects: @"publish

我刚开始发现Facebook Connect身份验证存在问题。如果我安装了iOS应用程序的3.4.4版,则会调用我的代理的fbDidNotLogin方法,并显示错误消息“用户拒绝了您的请求”。当我卸载FB应用程序时,身份验证工作正常。还有人看到了吗?有人知道我如何绕过这个bug吗

以下是我对Facebook对象的调用:

[[app facebook] authorize:[NSArray arrayWithObjects:
                           @"publish_stream", @"offline_access", nil]
                           delegate:app];

我可以确认我在这里遇到了同样的问题。我回溯了一下,我看到facebook应用程序正在打开我的应用程序,url中有以下查询字符串:

错误\u原因=用户%5Fdenied&错误=访问%5Fdenied&错误\u描述=用户%2b被拒绝%2b您的%2b请求%2E%3F%5F

不幸的是,我们只能等待:正如中所指出的,您可以强制FBConnect使用Safari对话框,而不是快速切换到已安装的FB应用程序。只需注释掉Facebook.m中调用FB应用程序的代码块


这是一种绕过FB漏洞的方法,直到他们修复他们的应用程序。这不是一个理想的解决方案,但它可以工作。

确保在应用程序的Facebook页面上正确设置了应用程序包id

我认为他们刚刚开始实施这一点,这就是为什么它最近才被打破

您可以通过进入Facebook上的应用程序设置,并在获取应用程序Id的屏幕上单击“编辑设置”来更改此设置。“移动本机”部分将允许您更改iOS捆绑包Id,以匹配您在Info.plist中的捆绑包标识符


希望这对别人有帮助!要知道,你可以在最新的Facebook应用程序上实现这一点,这可能是如上所述的配置问题。

这很明显,但是如果你的应用程序是沙盒的,那么你需要确保使用它登录的每个人都是Facebook应用程序设置中的“测试人员”或更高级别的人。:-$

更新:我从今天下载的最新示例应用程序中获得了相同的行为。我插入了我的应用程序ID,示例应用程序的fbDidNotLogin委托方法被一致调用。请您也检查一下:不幸的是,使用webView替代方案进行应用程序连接对我来说不是一个解决方案。我不认为通过向苹果发送更新来让facebook集成变得更糟(对于登录facebook应用程序的用户来说,这要容易得多)是个好主意:(答对了。谢谢你的指针。iOS捆绑包ID是区分大小写的,这是我的问题。奇怪的是,它的行为不同,取决于你安装的FB应用程序版本。我希望这种强制是Facebook服务器端逻辑的一种功能,而不是客户端。@Steve-此验证需要客户端支持,因为是可以(并且必须)发送(或接收)的客户端用于验证的捆绑id。强制执行很可能在服务器端本身。只是它们允许旧版本的FB应用程序工作,而不必对其他应用程序进行捆绑id验证。否则,iOS FB应用程序的每次安装都必须更新,以使任何其他FB连接的应用程序工作,这肯定是不可取的。这可能会导致虽然他们应该一直发送bundle ID信息,但他们显然仍然没有将bundle ID发送给非app auth实现,因此这是不一致的。然而,我仍然对Facebook感到不满,因为(1)没有向开发者发送有关策略更改的电子邮件,让我们知道应该检查什么(他们肯定知道我们的电子邮件地址)和(2)给出非描述性错误消息(“用户拒绝了您的请求”--不,如果是“iOS捆绑包ID不匹配”,则很容易找到)。@Corn Puff请您也检查一下: