问题描述
是否可以使用内置的 iOS 6 Facebook 集成来获取用户的基本信息(电子邮件地址、生日等)?我见过的所有文档/示例都使用 iOS 6 集成来简单地打开一个 SLComposeViewController
.
感谢您的宝贵时间.
请查看我的示例项目.它允许您将视频上传到 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 {如果(!_accountStore)_accountStore = [[ACAccountStore 分配] init];ACAccountType *facebookTypeAccount = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];[_accountStore requestAccessToAccountsWithType:facebookTypeAccount选项:@{ACFacebookAppIdKey:@"483616868329082",ACFacebookPermissionsKey:@[@"email"]}完成:^(授予布尔值,NSError *错误){如果(授予){NSArray *accounts = [_accountStore accountsWithAccountType:facebookTypeAccount];_facebookAccount = [accounts lastObject];NSLog(@"成功");[我自己];}别的{//哎哟NSLog(@"失败");NSLog(@"错误:%@", 错误);}}];}
获取我":
- (void)me{NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"];SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook请求方法:SLRequestMethodGET网址:meurl参数:无];merequest.account = _facebookAccount;[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];NSLog(@"%@", meDataString);}];}
Is it possible to use the built-in iOS 6 Facebook integration to get the user's basic info (email address, birthday, etc)? All of the documentation/examples I have seen use the iOS 6 integration to simply open an SLComposeViewController
.
Thank you for your time.
Please check out my sample project. It allows you to upload video to Facebook, but it also includes a method to get your info, you should look at the file ViewController.m
, the one noted "Native" in the tab controller.
https://bitbucket.org/danielphillips/fb-video-upload
You will need to import the Social
and Accounts
frameworks to do what you want. You request access to the users Facebook account from the ACAccountStore
, if you are granted access, then you use this account to create an SLRequest
with the parameters you want, here you want the graph object "/me".
Properties:
@property (nonatomic, retain) ACAccountStore *accountStore;
@property (nonatomic, retain) ACAccount *facebookAccount;
Authenticate:
- (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);
}
}];
}
Get "me":
- (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);
}];
}
这篇关于Facebook iOS 6 - 获取用户信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!