我已经实现了facebook SDK,借助它可以获得facebook身份验证以及使用以下代码的用户信息。
if(!self.accountStore)
self.accountStore = [[ACAccountStore alloc] init];
if(NSClassFromString(@"SLComposeViewController") != nil)
{
ACAccountType *facebookTypeAccount = [self.accountStore
accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"];
NSLog(@"facebookTypeAccount..:%@",facebookTypeAccount);
NSArray *accounts = [self.accountStore accountsWithAccountType:facebookTypeAccount];
if (facebookTypeAccount) {
if ([accounts respondsToSelector:@selector(count)]) {
[self.accountStore requestAccessToAccountsWithType:facebookTypeAccount
options:@{ACFacebookAppIdKey:
@"key", ACFacebookPermissionsKey: @[@"email"]}
completion:^(BOOL granted, NSError
*error) {
if(granted){
NSArray *accounts = [self.accountStore
accountsWithAccountType:facebookTypeAccount];
[self fetchuserinfo];
}
}];
}
-(void)fetchuserinfo
{
NSString *accessToken = [FBSession activeSession].accessToken;
NSString *url=[NSString stringWithFormat:@"https://graph.facebook.com/me"];
NSURL *meurl = [NSURL URLWithString:url];
SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:meurl
parameters:nil];
NSLog(@" setting account %@",_facebookAccount);
merequest.account = _facebookAccount;
[merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
returnedData = responseData;
NSLog(@" meRequest Respnse %@", meDataString);
if (returnedData!=nil) {
if(NSClassFromString(@"NSJSONSerialization"))
{
NSError *error = nil;
id object = [NSJSONSerialization
JSONObjectWithData:returnedData
options:0
error:&error];
if(error) { }
if([object isKindOfClass:[NSDictionary class]])
{
NSDictionary *results = object;
NSString *categoryString=[[results valueForKeyPath:@"picture.data"] objectForKey:@"url"];
NSString *userid=[results objectForKey:@"id"];
if (userid != nil)
{
self.gotUserDetails = YES;
}
NSString *username=[results objectForKey:@"name"];
NSString *email=[results objectForKey:@"email"];
NSUserDefaults *userId=[NSUserDefaults standardUserDefaults];
[userId setObject:userid forKey:@"userid"];
}
}
}
}
但要从此登录用户发布Feed(https://graph.facebook.com/me/feed/access_token=),我需要访问令牌。如果有人知道如何在iOS 6.0中获取访问令牌,请帮助我。
感谢所有人。
答案 0 :(得分:0)
Apple并没有担心获取令牌并将其传递给您,而是提供了SLRequest
,您可以使用它。您可以使用响应数据的身份验证,传输和收集来指定目标URL和参数以及SLRequest
交易(透明地)。
您可能实际上并未获得令牌,但仍需要获得授权,并且该授权与您要执行的操作列表相关联。您的代码目前只显示您想要获取电子邮件地址,但您可以添加其他权限:
[accountStore requestAccessToAccountsWithType:facebookAccountType
options:
@{
ACFacebookAppIdKey : ...,
ACFacebookPermissionsKey : @[ @"email", @"read_stream", @"user_groups", @"user_videos" ]),
}
completion:^(BOOL granted, NSError *error) { ...
您需要查看Facebook文档,找出您需要向用户请求的权限,并填写ACFacebookPermissionsKey
。
答案 1 :(得分:0)
//Try This
-(void)fetchuserinfo
{
NSString *accessToken = [FBSession activeSession].accessToken;
NSLog(@"%@",accessToken);
}
or
-(void)fetchuserinfo
{
NSLog(@"%@",FBSession.activeSession.accessToken);
}
答案 2 :(得分:0)
您应该导入FacebookSDK / FacebookSDK.h
#import <FacebookSDK/FacebookSDK.h>
....
[self checkFBIDWithToken:[FBSession activeSession].accessTokenData.accessToken];
PS:&#34; checkFBIDWithToken:(NSString *)tempToken&#34;是一种方法。
facebook doc:accessToken