大佬教程收集整理的这篇文章主要介绍了ios – FacebookSDK提供两次登录UI,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,在用户选择使用Facebook之前,我不会向Facebook请求任何内容,在这种情况下,首先会向他们提供获取读取权限的UI,然后再次获取发布权限.控制从我的应用程序切换到Facebook(读取)回到我的应用程序,然后立即回到Facebook(发布)然后回到我的应用程序.
这是一种糟糕的用户体验,特别是因为带有“Okay”的facebook屏幕看起来与用户相同. (为什么我要按两次Okay?)
简而言之,我的代码是:
check for a valid FBSession.activeSession if not open call FBSession openActiveSessionWithReadPermissions if successful call FBSession.activeSession reauthorizeWithPublishPermissions then publish post
首先,对于较旧的iOS(例如iOS 5.0),您可以使用openActiveSessionWithPublishPermissions:并一次性执行读取和发布权限.其次,如果用户从未从“设备设置”登录Facebook,则此同一调用有效.因此,以下代码似乎工作如下:
>如果用户已从设备设置登录Facebook:@L_618_17@对话框
阅读和@L_618_17@发布对话框.
>如果用户安装了Facebook应用程序:
切换到FB应用程序一次,连续获得2个提示.
>否则:切换
到Safari一次,并连续获得2个提示
我使用Facebook SDK 3.2.1在iOS6和iOS5设备上测试了此代码
- (BOOL)hasFacebookInDeviceSetTings { ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *accountTypeFB = [accountStore accountTypeWithAccountTypEIDentifier:@"com.apple.facebook"]; BOOL hasFacebookBuilTinAccount = (accountTypeFB != nil); return hasFacebookBuilTinAccount; } - (BOOL)hasLoggedInToFacebookInDeviceSetTings { if (![self hasFacebookInDeviceSetTings]) { return NO; } BOOL result = [SLComposeViewController isAvailableForserviCEType:SLserviCETypeFacebook]; return result; } - (void)openFacebookSessionWithAllowLoginUI:(BOOL)allowLoginUI { if (![self hasLoggedInToFacebookInDeviceSetTings]) { // Simpler if we don't have the built in account [FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:allowLoginUI completionHandler:^(FBSession *session,FBSessionState state,NSError *error) { [self facebookSessionStateChanged:session state:state error:error]; }]; } else if (!FBSession.activeSession.isOpen) { __block BOOL recursion = NO; [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:allowLoginUI completionHandler:^(FBSession *session,NSError *error) { if (recursion) { return; } recursion = YES; if (error || !FBSession.activeSession.isOpen) { [self facebookSessionStateChanged:session state:state error:error]; } else { assert(FBSession.activeSession.isOpen); if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NsnotFound) { [FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session,NSError *error) { [self facebookSessionStateChanged:session state:FBSession.activeSession.state error:error]; }]; } } }]; } }
hasFacebookInDeviceSetTings告诉你这个设备是否甚至支持Facebook的设置(即这是iOS6).
hasLoggedInToFacebookInDeviceSetTings告诉您用户是否已从iOS6 Facebook设备设置登录到Facebook.
您需要创建自己的facebookSessionStateChanged:和其他代码,如login tutorial中所述
以上是大佬教程为你收集整理的ios – FacebookSDK提供两次登录UI全部内容,希望文章能够帮你解决ios – FacebookSDK提供两次登录UI所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。