FB 与 Three20 连接 - 登录 facebook 时出现问题

Posted

技术标签:

【中文标题】FB 与 Three20 连接 - 登录 facebook 时出现问题【英文标题】:FB connect with Three20 - problem logging in facebook 【发布时间】:2011-04-27 15:09:52 【问题描述】:

我已经开始使用 Three20 并构建一个 FB 连接 iPhone ios 应用,

我正在尝试拨打[facebook authorize:permissionsArray delegate:self];

但它什么也没做,因为 FB 试图将子视图添加到主窗口的功能在 Three20 应用程序中不存在。我尝试使用 Safari 身份验证,但它不会返回到我的应用并完成该过程。

有没有其他方法通过 Three20 iOS 应用登录 FB 帐户?

谢谢!

【问题讨论】:

【参考方案1】:

我猜您提到的 Safari 身份验证是 Facebook API 的单点登录功能。如果您在模拟器中,它只会显示为 Safari。如果您在安装了 Facebook 应用程序的物理设备上,它会将您转发到 Facebook 中的授权页面,或者如果已经授权,您只需登录即可。

我相信您在单点登录中缺少的部分是设置回调 URL 并在 .plist 应用配置文件中为您的应用注册该 URL。

Facebook 有一个非常详细的教程来设置一切: https://developers.facebook.com/docs/guides/mobile/#ios

需要注册一个特定的 URL 在这个唯一标识的文件中 带有 iOS 的应用程序。创建一个新行 具有单个项目的命名 URL 类型, URL Schemes,包含一个 值,fbYOUR_APP_ID(文字 字符 fb 后跟您的应用 id)。

我也在使用 Three20 框架和 Facebook SDK,两者应该可以很好地协同工作。尽管第一次启动和运行 Facebook SDK 有足够多的步骤,但启动起来有点棘手。

【讨论】:

另一个问题 - 过程完成时不会触发 fbDidLogin 方法。登录完成后还有其他选择吗?谢谢! 要检查两件事:确保您的应用正在处理来自 Facebook SSO 的 url 回调,在您的主应用委托中,您需要定义方法:- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 还要确保您正在使用的对象facebook 实例实现了协议FBSessionDelegate,并且您在调用授权时正确设置了 facebook 实例上的委托:[facebook authorize:kAppId permissions:permissions delegate:self]; 好的解决了。我在包含[[TTNavigator navigator] openURLAction:[TTURLAction actionWithURLPath:URL.absoluteString]] 的应用程序委托中合并了相同的方法,并添加了return [facebook handleOpenURL:URL],在删除第一行后它工作得很好。但是去掉这条线没有问题吗?谢谢。 您知道我没有尝试通过TTNavigator openURLAction: 方法调用应用程序网址(即fb12345://),但根据您描述的调用看起来它一遍又一遍地调用您的应用程序.因此你的无限循环。应该没有问题,因为 [facebook handleOpenURL:URL] 行是真正需要调用才能完成登录的内容。

以上是关于FB 与 Three20 连接 - 登录 facebook 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 登录问题 - iOS 应用程序的新用户无法通过 FB 连接登录

如果用户未登录 Facebook,则 FB.getLoginStatus 不会触发

THREE.BufferGeometry - 顶点法线和面法线

Three.js教程:Face3对象定义Geometry的三角形面

(转)Three challenges you’re going to face when building a chatbot

FB登录后IOS切换视图