Facebook通过ios中的社交框架login

我是iOS开发新手。 我必须在我的iOS应用程序中集成Facebooklogin,当用户login时,它将获取所有信息并将其导航到主屏幕。 我已经通过Facebook最新的SDK做了这个,但我希望通过社交框架来完成。 我经历了许多在线的东西,也发现了他们通过社交框架而不是Facebooklogin精确地在Facebook页面(Wall)上分享(张贴)内容的例子。 任何人请帮助,让我知道如果Facebooklogin是可能通过社会框架,或者我必须坚持到SDK。 提前致谢

导入社交和Acount框架

把这个代码放到你的.m文件中

-(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,ACFacebookAppIdKey,@[@"friends_videos"],ACFacebookPermissionsKey, 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); } }]; } 

还logging在您的设备/模拟器的原生Facebook应用程序

Swift 3版解决scheme@reena

 @IBAction func loginButtonPressed(_ sender: UIButton) { var facebookAccount: ACAccount? let options:[String : Any] = [ACFacebookAppIdKey: "YOUR_FACEBOOK_API_KEY", ACFacebookPermissionsKey: ["email"],ACFacebookAudienceKey:ACFacebookAudienceFriends] let accountStore = ACAccountStore() let facebookAccountType = accountStore.accountType(withAccountTypeIdentifier: ACAccountTypeIdentifierFacebook) accountStore.requestAccessToAccounts(with: facebookAccountType, options: options) { (granted:Bool, error:Error?) in if granted{ let accounts = accountStore.accounts(with: facebookAccountType) facebookAccount = accounts?.last as? ACAccount let dict:NSDictionary = facebookAccount!.dictionaryWithValues(forKeys: ["properties"]) as NSDictionary let properties:NSDictionary = dict["properties"] as! NSDictionary print("facebook Response is-->:%@",properties) } else { if let err = error as? NSError, err.code == Int(ACErrorAccountNotFound.rawValue) { DispatchQueue.main.async { self.displayAlert("There is no Facebook accounts configured. you can add or created a Facebook account in your settings.") } } else { DispatchQueue.main.async { self.displayAlert("Permission not granted For Your Application") } } } } } 

Facebooklogin使用帐户和社交框架(swift)

 var facebookAccount: ACAccount? let options: [NSObject : AnyObject] = [ACFacebookAppIdKey: "YOUR_FACEBOOK_API_KEY", ACFacebookPermissionsKey: ["publish_stream","publish_actions"],ACFacebookAudienceKey:ACFacebookAudienceFriends] let accountStore = ACAccountStore() let facebookAccountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierFacebook) accountStore.requestAccessToAccountsWithType(facebookAccountType, options: options) { (granted, error) -> Void in if granted { let accounts = accountStore.accountsWithAccountType(facebookAccountType) self.facebookAccount = accounts.last as? ACAccount let accountsArray=accountStore.accountsWithAccountType(facebookAccountType) as NSArray self.facebookAccount=accountsArray.lastObject as? ACAccount var dict:NSDictionary dict=NSDictionary() dict=self.facebookAccount!.dictionaryWithValuesForKeys(["properties"]) let properties:NSDictionary=dict["properties"] as! NSDictionary print("facebook Response is-->:%@",properties) } else { if error.code == Int(ACErrorAccountNotFound.rawValue) { dispatch_async(dispatch_get_main_queue(), { () -> Void in self.displayAlert("There is no Facebook accounts configured. you can add or created a Facebook account in your settings.") }) } else { dispatch_async(dispatch_get_main_queue(), { () -> Void in self.displayAlert("Permission not granted For Your Application") }) } } }