繁体   English   中英

在iOS 6.0中获取facebook访问令牌

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM