我是iOS开发的新手.我必须在我的iOS应用程序中集成Facebook登录,当用户登录时,它将获取所有信息并导航到主屏幕.我已经通过Facebook最新的SDK完成了这个工作,但是我希望通过社交框架来完成.我已经经历了很多在线的东西,并且还通过社交框架找到了他们在Facebook页面(墙上)上分享(发布)内容的例子,但是并不完全是Facebook登录.任何人请帮助,让我知道如果Facebook登录是可能通过社会框架,或者我必须坚持使用SDK.提前致谢
解决方法
进口社会和安置框架
-(void)facebook { self.accountStore = [[ACAccountStore alloc]init]; ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; NSString *key = @"451805654875339"; NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey,nil]; [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion: ^(BOOL granted,NSError *e) { if (granted) { NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType]; //it will always be the last object with single sign on self.facebookAccount = [accounts lastObject]; ACAccountCredential *facebookCredential = [self.facebookAccount credential]; NSString *accessToken = [facebookCredential oauthToken]; NSLog(@"Facebook Access Token: %@",accessToken); NSLog(@"facebook account =%@",self.facebookAccount); [self get]; [self getFBFriends]; isFacebookAvailable = 1; } else { //Fail gracefully... NSLog(@"error getting permission yupeeeeeee %@",e); sleep(10); NSLog(@"awake from sleep"); isFacebookAvailable = 0; } }]; } -(void)checkfacebookstatus { if (isFacebookAvailable == 0) { [self checkFacebook]; isFacebookAvailable = 1; } else { printf("Get out from our game"); } } -(void)get { NSURL *requestURL = [NSURL URLWithString:@"https://graph.facebook.com/me"]; SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:requestURL parameters:nil]; request.account = self.facebookAccount; [request performRequestWithHandler:^(NSData *data,NSHTTPURLResponse *response,NSError *error) { if(!error) { NSDictionary *list =[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; NSLog(@"Dictionary contains: %@",list ); self.globalmailID = [NSString stringWithFormat:@"%@",[list objectForKey:@"email"]]; NSLog(@"global mail ID : %@",globalmailID); fbname = [NSString stringWithFormat:@"%@",[list objectForKey:@"name"]]; NSLog(@"faceboooookkkk name %@",fbname); if([list objectForKey:@"error"]!=nil) { [self attemptRenewCredentials]; } dispatch_async(dispatch_get_main_queue(),^{ }); } else { //handle error gracefully NSLog(@"error from get%@",error); //attempt to revalidate credentials } }]; self.accountStore = [[ACAccountStore alloc]init]; ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; NSString *key = @"451805654875339"; NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,@[@"friends_videos"],nil]; [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion: ^(BOOL granted,NSError *e) {}]; } -(void)accountChanged:(NSNotification *)notification { [self attemptRenewCredentials]; } -(void)attemptRenewCredentials { [self.accountStore renewCredentialsForAccount:(ACAccount *)self.facebookAccount completion:^(ACAccountCredentialRenewResult renewResult,NSError *error){ if(!error) { switch (renewResult) { case ACAccountCredentialRenewResultRenewed: NSLog(@"Good to go"); [self get]; break; case ACAccountCredentialRenewResultRejected: NSLog(@"User declined permission"); break; case ACAccountCredentialRenewResultFailed: NSLog(@"non-user-initiated cancel,you may attempt to retry"); break; default: break; } } else{ //handle error gracefully NSLog(@"error from renew credentials%@",error); } }]; }
也登录到您的设备/模拟器中的原生Facebook应用程序