ACAccountCredential returns null for oauthToken

2019-06-27 13:21发布

I am getting access to user's facebook via:

[accStore requestAccessToAccountsWithType:fbAccountType
                                           options:options
                                        completion:^(BOOL granted, NSError *error) {
                                            if (granted) {
                                                // If access granted, then get the Facebook account info
                                                NSArray *accounts = [accStore
                                                                     accountsWithAccountType:fbAccountType];
                                                ACAccount *acc = [accounts lastObject];

                                                // Get the access token, could be used in other scenarios
                                                ACAccountCredential *fbCredential = [acc credential];
                                                NSString *accessToken = [fbCredential oauthToken];
                                                NSLog(@"Facebook Access Token: %@", accessToken);


                                                // Add code here to make an API request using the SLRequest class

                                            } else {
                                                NSLog(@"Access not granted");
                                            }
                                        }];

This prints out:

 Facebook Access Token: (null)

I am granted access, but the token is null. What am I doing wrong?

Thanks

2条回答
别忘想泡老子
2楼-- · 2019-06-27 13:30

Here's some info from Apple doc:

@property(nonatomic, retain) ACAccountCredential *credential Discussion This property is required and must be set before the account is saved. For privacy reasons, this property is inaccessible after the account is saved.

As in your code, [acc credential] will return null

For reference, http://developer.apple.com/library/ios/#documentation/Accounts/Reference/ACAccountClassRef/Reference/Reference.html#//apple_ref/doc/uid/TP40011019

Found a similar post here: Get Facebook access token from Social.framework(iOS6)

Hope this can help.

查看更多
Lonely孤独者°
3楼-- · 2019-06-27 13:46

I've solved the problem by renewing the credentials. That is, after access to FB has been granted, but in the case where ACAccountCredential's oauthToken returns nil, we just call ACAccountStore's renewCredentialsForAccount. Credentials are renewed, and after that the token is valid!

查看更多
登录 后发表回答