使用SDK登录Facebook
问题描述:
如果用户在他的iPhone设置中设置了Facebook帐户,我可以获得用户个人资料权限。为此,我使用了下面的代码:使用SDK登录Facebook
if(!_accountStore)
_accountStore = [[ACAccountStore alloc] init];
ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[_accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey: @"app_id", ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError *error) {
if(granted){
NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount];
_facebookAccount = [accounts lastObject];
NSLog(@"Success");
[self me];
}else{
NSLog(@"go to iphone settings");
}
}];
-(void)me
{
NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"];
SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:meurl
parameters:nil];
merequest.account = _facebookAccount;
[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@", meDataString);
}];
}
如果用户没有设置自己的Facebook帐户,然后控制就会转移到别的部分即去iphone设置。在这部分内容中,我想打开Facebook登录页面,以便用户能够登录他的Facebook帐户,而无需进行iPhone设置。那么我们怎么能通过SDK打开Facebook登录。请帮我解决这个问题。
在此先感谢。
答
在这种情况下,如果您没有使用用户帐户(如果他/她没有在iOS设置中设置),则需要在应用程序上实现Facebook SDK(https://developers.facebook.com/ios/)。这很简单,只需按照以下步骤操作即可(https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/)。
之后,您可以使用FBSession's
方法+openActiveSessionWithReadPermissions:allowLoginUI:completionHandler:
执行用户登录。
是真实的,在我的申请,我甚至不尝试登录苹果的requestAccessToAccountsWithType:options:completion:;
与最新的Facebook SDK的用户,默认行为是:
- 尝试与用户帐户设置密码在iOS设置上;
- 如果未找到帐户,则尝试打开Facebook应用程序以请求登录/权限;
- 如果Facebook应用程序未安装在设备上,它会在Safari上打开Facebook,作为后备。
我试图与Facebook登录的时候,如果一个Facebook帐户在手机设置中配置了“FBSessionStateClosedLoginFailed”。我不知道为什么这是发生。 – 2014-07-11 05:00:52