2011-08-31 108 views
13

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

这里是我的呼吁Facebook的对象:

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

更新:我从今天下载的最新示例应用程序中获得了相同的行为。我插入了我的应用程序ID,并且始终调用示例应用程序的fbDidNotLogin委托方法。 –

+0

你能否看看这个以及:http://stackoverflow.com/questions/30612701/ios-facebook-sdk-your-apps-facebook-login-is-broken – iYoung

回答

15

确保您的应用程序捆绑ID在您的应用程序的Facebook页面上正确设置。

我认为他们刚刚开始强制执行此操作,这就是为什么它刚刚破裂。

您应该可以通过在Facebook上进入您的应用程序设置并点击屏幕上的“编辑设置”来更改此设置。 'Mobile Native'部分将允许您更改iOS Bundle ID以匹配Info.plist中的Bundle标识符。

希望这可以帮助别人!知道你可以使用最新的Facebook应用程序工作,这可能是一个像上面描述的配置问题。

+1

宾果。感谢指针。我不认为使facebook整合更糟糕(对于在Facebook应用程序中登录的用户更容易) Bundle ID是区分大小写的,这是我的问题。奇怪的是,它的行为有所不同,具体取决于你安装的FB应用程序版本。我期望这种强制执行是Facebook服务器端逻辑功能,而不是客户端 –

+0

@Steve - 这种验证需要客户端的支持,因为它是客户端可以(并且必须)发送(或接收)bundle-id进行验证。执行很可能在服务器端本身。只要他们允许旧版本的FB应用程序工作,而无需对其他应用程序进行bundle-id验证。否则,每一个iOS FB应用程序的安装都必须更新以使任何其他FB连接应用程序正常工作,这当然是不可取的。 – brahmana

+0

这很有道理,尽管它们一直都在发送包ID信息。他们显然仍然不会将捆绑ID发送到非应用程序验证实现,因此它不一致。然而,我仍然对Facebook不满意:(1)没有向开发者发送关于政策变更的电子邮件,让我们知道应该检查什么(当然他们知道我们的电子邮件地址);(2)给出一个非描述性的错误信息(“用户拒绝你的请求” - 不,如果它是“iOS Bundle ID不匹配”,它将很容易追踪)。 –

4

我可以确认我在这里遇到了同样的问题。我backtraced了一下,我看到了Facebook应用程序与此查询字符串打开我的应用程序中的网址:

ERROR_REASON =用户%5Fdenied &错误=访问%5Fdenied & ERROR_DESCRIPTION =的%2Buser%2Bdenied%2Byour %2Brequest%2E%3F%5F

我想不幸的是我们没有什么可以做,但等待:S

+0

不幸的是使用webView替代方案连接应用程序是不是我的解决方案。我认为通过发送更新到苹果是一个好主意:( –

0

正如this thread指出的那样,你可以强制FBConnect使用Safari浏览器对话框,而不是快速的应用程序切换到安装的FB应用程序。只需注释掉Facebook.m中的代码块即可调用FB应用程序。

这是绕过FB错误的一种方式,直到他们修复他们的应用程序。这不是一个理想的解决方案,但它的工作原理。

1

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