Facebook iOS 6 - 获取用户信息
Posted
技术标签:
【中文标题】Facebook iOS 6 - 获取用户信息【英文标题】:Facebook iOS 6 - get user info 【发布时间】:2012-10-15 21:11:57 【问题描述】:是否可以使用内置的 ios 6 Facebook 集成来获取用户的基本信息(电子邮件地址、生日等)?我看到的所有文档/示例都使用 iOS 6 集成来简单地打开SLComposeViewController
。
感谢您的宝贵时间。
【问题讨论】:
【参考方案1】:请查看我的示例项目。它允许您将视频上传到 Facebook,但它还包括一种获取信息的方法,您应该查看文件 ViewController.m
,该文件在选项卡控制器中注明为“Native”。
https://bitbucket.org/danielphillips/fb-video-upload
您需要导入 Social
和 Accounts
框架来做您想做的事。您从ACAccountStore
请求访问用户 Facebook 帐户,如果您被授予访问权限,那么您使用此帐户创建一个带有您想要的参数的SLRequest
,这里您需要图形对象“/me”。
属性:
@property (nonatomic, retain) ACAccountStore *accountStore;
@property (nonatomic, retain) ACAccount *facebookAccount;
验证:
- (IBAction)getMeButtonTapped:(id)sender
if(!_accountStore)
_accountStore = [[ACAccountStore alloc] init];
ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[_accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@ACFacebookAppIdKey: @"483616868329082", ACFacebookPermissionsKey: @[@"email"]
completion:^(BOOL granted, NSError *error)
if(granted)
NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount];
_facebookAccount = [accounts lastObject];
NSLog(@"Success");
[self me];
else
// ouch
NSLog(@"Fail");
NSLog(@"Error: %@", error);
];
得到“我”:
- (void)me
NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"];
SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:meurl
parameters:nil];
merequest.account = _facebookAccount;
[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@", meDataString);
];
【讨论】:
我使用了上面的代码,第一次代码对我来说很好。但是下次当我取消链接 fb 帐户然后再次链接时出现以下错误 error = code = 190; message = "设备上的访问令牌已失效。";类型 = OAuthException; ; @NSIllusion 这里的访问令牌问题解决了吗? @user717452 几乎解决了,但没有找到任何对我来说很好的答案。我的问题通过重置模拟器内容和设置解决了。 运作良好。如果没有,请按照我在这篇文章中的回答:***.com/questions/12539549/… 试试这个链接的正确答案。它对我有用。 ***.com/questions/12601191/…【参考方案2】:https://github.com/jonasman/JNFacebookDownload
self.facebookDownload = [JNFacebookDownload new];
self.facebookDownload.appID = @"380637545425915";
[self.facebookDownload downloadInformation:^(NSDictionary *userInfo, NSError *error)
dispatch_async(dispatch_get_main_queue(), ^
if (error)
if (error.code == JNFacebookDownloadNoAccount)
NSLog(@"No account");
else if (error.code == JNFacebookDownloadNoPermissions)
NSLog(@"No permissions");
else if (error.code == JNFacebookDownloadNoAPPID)
NSLog(@"No APP ID Configured");
else
self.textView.text = [userInfo description];
);
【讨论】:
以上是关于Facebook iOS 6 - 获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iOS 中的 Facebook SDK 获取用户信息?
如何在 ios 中使用 facebook sdk 4.1 获取用户信息?
在 iOS 8 中无法从 Facebook 获取用户的电子邮件个人信息