はい、Facebook アカウントに組み込まれている iOS 6 を使用して (実際には FB SDK を使用しなくても) メールを取得できます。ユーザーがすでに iOS 設定で Facebook にログインしている場合、初回のみ、FB アカウントへのアプリ アクセスを許可するよう求められます。
最初に、これをインターフェースに追加します。
#import <Social/Social.h>
#import <Accounts/Accounts.h>
@property (nonatomic, strong) ACAccountStore *accountStore;
@property (nonatomic, strong) ACAccount *facebookAccount;
次に、これを実装に使用します。
- (void)getFacebookPermissions
{
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
// we have facebook account in ios settings
NSLog(@"Facebook account exists");
ACAccountType *facebookTypeAccount = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[self.accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey: *YOUR_FACEBOOK_APP_ID_HERE!*, ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError *error) {
if (granted) {
self.facebookAccount = [[self.accountStore accountsWithAccountType:facebookTypeAccount] lastObject];
NSURL *meURL = [NSURL URLWithString:@"https://graph.facebook.com/me"];
SLRequest *meRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:meURL
parameters:nil];
meRequest.account = self.facebookAccount;
[meRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (error) {
NSLog(@"[ERROR] %@", [error localizedDescription]);
// or do some error handling
} else {
NSError *jsonError;
NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:responseData
options:NSJSONReadingAllowFragments
error:&jsonError];
if (jsonError)
{
NSLog(@"[FB PARSING ERROR] %@", [error localizedDescription]);
} else {
// here it is!
NSString *email = [responseJSON objectForKey:@"email"];
}
}
}];
} else {
if (error) {
NSLog(@"[ERROR] %@", [error localizedDescription]);
}
else
{
NSLog(@"Access to Facebook was not granted. Please go to the device settings and allow access for *YOUR_APP_NAME*");
}
}
}];
} else {
NSLog(@"There was an error retrieving your Facebook account, make sure you have an account setup in Settings and that access is granted for *YOUR_APP_NAME*");
}
}
AccountStore のインスタンスを作成し、ソーシャル フレームワークとアカウント フレームワークを弱いリンクにすることを忘れないでください。
PS Facebook アプリの設定は次のとおりです (上部にアプリ ID が表示されます)。
お役に立てれば!