[英]get the facebook access token in iOS 6.0
我已经实现了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中获取访问令牌,请帮助我。
谢谢大家。
Apple并没有担心获取令牌并将其传递给您, SLRequest
提供了可以使用的SLRequest
。 您可以使用响应数据的身份验证,传输和收集来指定目标URL和参数以及SLRequest
交易(透明地)。
您实际上可能无法获得令牌,但仍需要获得授权,并且该授权与您要执行的操作列表相关联。 您的代码目前只显示您想要获取电子邮件地址,但您可以添加其他权限:
[accountStore requestAccessToAccountsWithType:facebookAccountType
options:
@{
ACFacebookAppIdKey : ...,
ACFacebookPermissionsKey : @[ @"email", @"read_stream", @"user_groups", @"user_videos" ]),
}
completion:^(BOOL granted, NSError *error) { ...
您需要检查Facebook文档以找出您需要从用户请求的权限,并填写ACFacebookPermissionsKey
。
//Try This
-(void)fetchuserinfo
{
NSString *accessToken = [FBSession activeSession].accessToken;
NSLog(@"%@",accessToken);
}
or
-(void)fetchuserinfo
{
NSLog(@"%@",FBSession.activeSession.accessToken);
}
facebook SDK 3.2在iOS 7和iOS 8中,它对我来说很好。
您应该导入FacebookSDK / FacebookSDK.h
#import <FacebookSDK/FacebookSDK.h>
....
[self checkFBIDWithToken:[FBSession activeSession].accessTokenData.accessToken];
PS:“checkFBIDWithToken:(NSString *)tempToken”是一种方法。
facebook doc: accessToken
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.