如何从facebookSDK将Facebook帐户保存到ACAccountStore

时间:2014-01-09 11:34:28

标签: ios facebook acaccount acaccountstore facebook-sdk-3.1

我想将Facebook帐户保存到iOS中的ACAccountStore

  1. 我会从facebookSDK获得accessTocken但是如何获得tocken和secret
  2. 如何将其保存到ACAccountStore
  3. 先谢谢。

    ------编辑--------

    我有一个使用Facebook登录的应用程序,之后登录信息需要共享他选择的照片。 我的用例是,

    1. 如果帐户已经在设置应用中,那么我可以使用它进行登录和分享。

    2. 用户使用safari或webview登录,然后我可以继续分享。

      一个。 facebook SDK说如果用户需要使用OS集成共享控制器,那么login method used to authenticate the user must be native iOS 6.0 authentication.

      湾如果我需要共享facebook SDK提供的选项使用facebook App我不想要这个选项,因为我想尽可能避免App切换。

    3. 如何解决这个问题..

1 个答案:

答案 0 :(得分:0)

这样做你应该有一个accessstoken和secret,

if (self.accountStore == nil) {
    self.accountStore = [[ACAccountStore alloc] init];
}

//make credentials to assign to ACAccount 
ACAccountCredential *credential = [[ACAccountCredential alloc] initWithOAuthToken:accesstoken tokenSecret:secret];
ACAccountType *acctType =[self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
ACAccount *newAccount = [[ACAccount alloc] initWithAccountType:acctType];

newAccount.credential = credential;

NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys:
                         "xXXXXXX", (NSString *)ACFacebookAppIdKey,
                         [NSArray arrayWithObject:@"basic_info"], (NSString *)ACFacebookPermissionsKey,
                         ACFacebookAudienceEveryone, (NSString *)ACFacebookAudienceKey,
                         nil];


[_accountStore requestAccessToAccountsWithType:acctType options:options completion:^(BOOL granted, NSError *error) {
    if (granted == YES) {
        [self.accountStore saveAccount:newAccount withCompletionHandler:^(BOOL success, NSError *error) {

            if (success) {
                NSLog(@"the account was saved!");
            }
            else {
                if ([error code] == ACErrorPermissionDenied) {
                    NSLog(@"Got a ACErrorPermissionDenied, the account was not saved!");
                }
                NSLog(@"%@",error);
            }
        }];
    }
    else {
        NSLog(@"%@ ",error);
    }
}];