Bad*_*ano 2 permissions facebook objective-c ios acaccount
首先,我不想使用Facebook SDK,所以我设法做到这一点,这是有效的,但我不知道如何检索用户的电子邮件,即使它是在我的权限请求.
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:accountTypeName];
NSDictionary *options;
if ( [accountTypeName isEqualToString:ACAccountTypeIdentifierFacebook]){
options = @{
ACFacebookAppIdKey: @"601517946570890"
,ACFacebookPermissionsKey: @[@"email"]
};
}
[account requestAccessToAccountsWithType:accountType options:options completion:^(BOOL granted, NSError *error)
{
if (granted == YES)
{
NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
if ([arrayOfAccounts count] > 0)
{
_account = [arrayOfAccounts lastObject];
NSDictionary *dict = @{
@"name": [_account userFullName] == nil ? [_account username] : [_account userFullName],
@"account_id": [_account identifier],
@"email": @"??"
};
NSLog(@"account info: %@",dict);
}
}
}];
Run Code Online (Sandbox Code Playgroud)
ACAccount上没有返回用户电子邮件的属性,所以我试图找到是否必须通过SLRequest完成并找不到它.
可能吗?
为了从Facebook获取用户的电子邮件地址,您必须使用Graph API使用Social框架查询当前用户:
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:[NSURL URLWithString:@"https://graph.facebook.com/me"]
parameters:nil];
request.account = _account; // This is the _account from your code
[request performRequestWithHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil && ((NSHTTPURLResponse *)response).statusCode == 200) {
NSError *deserializationError;
NSDictionary *userData = [NSJSONSerialization JSONObjectWithData:data options:0 error:&deserializationError];
if (userData != nil && deserializationError == nil) {
NSString *email = userData[@"email"];
NSLog(@"%@", email);
}
}
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2814 次 |
| 最近记录: |