现在我正在使用Facebook SDK来分享我的应用程序中的帖子。问题是这个sdk在我的应用程序中弹出一个webview并要求用户登录。必须有更好的方法。
我可以将共享信息发送到用户设备上的 facebook 应用程序(如果他们安装了它)吗?或者至少利用 facebook 应用程序来检查凭据?如果人们必须登录才能分享,他们可能不会这样做..
现在我正在使用Facebook SDK来分享我的应用程序中的帖子。问题是这个sdk在我的应用程序中弹出一个webview并要求用户登录。必须有更好的方法。
我可以将共享信息发送到用户设备上的 facebook 应用程序(如果他们安装了它)吗?或者至少利用 facebook 应用程序来检查凭据?如果人们必须登录才能分享,他们可能不会这样做..
The latest Facebook SDK 3.5 includes a native share dialog. If you follow the authentication workflow according do the documentation and the phone is on iOS 6.0 you should not get a UIWebView during authentication, instead you will get a UIAlertView.
Facebook 登录过程仅在少数情况下会使用 WebView。其中一些是:
1)您明确要求它这样做- (void)openWithBehavior:(FBSessionLoginBehavior)behavior completionHandler:(FBSessionStateHandler)handler;
,我认为这不是您的情况。
2) 如果设备上没有安装 Facebook 应用,则 FB SDK 回退到使用 WebView 登录窗口。
3)可能,这就是你的情况。如果您在第一次尝试打开 FB 会话时请求发布权限,则 FB SDK 也将回退到包含 WebView 的旧登录流程。在新的登录流程中,FB 会话应该首先以读取权限打开(在这种情况下,FB 将使用快速应用切换或原生 iOS FB 登录):
+ (BOOL)openActiveSessionWithReadPermissions:(NSArray*)readPermissions allowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler;
然后,您应该向用户请求额外的发布权限:
- (void)requestNewPublishPermissions:(NSArray*)writePermissions defaultAudience:(FBSessionDefaultAudience)defaultAudience completionHandler:(FBSessionRequestPermissionResultHandler)handler;
这样,用户将不需要登录(如果他已经登录了 FB 应用程序),但是从您的应用程序到 FB 的双重切换会带来不便(尽管它最近运行得相当快)。
我一直在寻找一种更简洁的方法来在第一次通话时使用 FB Single Sign On 获得发布权限,但不幸的是还没有发现任何工作。