当前位置: 首页 > 知识库问答 >
问题:

在iOS 6.0中获取facebook访问令牌

孔阎宝
2023-03-14

我已经实现了FacebookSDK,借助它可以通过以下代码获得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"];


            }

        }
    }
    }

但是要发布提要(https://graph.facebook.com/me/feed/access_token=)从这个登录用户我需要访问令牌。如果有人知道如何在iOS 6.0中获取访问令牌,请帮助我。

感谢所有人。

共有3个答案

戴正阳
2023-03-14

Facebook SDK 3.2iOS7

您应该导入FacebookSDK/FacebookSDK。H

#import <FacebookSDK/FacebookSDK.h>
....
[self checkFBIDWithToken:[FBSession activeSession].accessTokenData.accessToken];

PS:“checkFBIDWithToken:(NSString*)testoken”是一种方法

facebook文档:accessToken

龚浩宕
2023-03-14
//Try This

-(void)fetchuserinfo
{
    NSString *accessToken = [FBSession activeSession].accessToken;
    NSLog(@"%@",accessToken);
}

or

-(void)fetchuserinfo
{
    NSLog(@"%@",FBSession.activeSession.accessToken);
}
太叔京
2023-03-14

苹果公司提供了SLRequest,您可以使用它,而不用担心获得代币并将代币与您的通话一起传递。指定目标URL和参数,并SLRequest以透明方式处理响应数据的身份验证、传输和收集。

您可能无法实际获得代币,但您仍然需要获得授权,该授权与您想做的事情列表相关联。您的代码当前仅显示您希望获取电子邮件地址,但您可以添加其他权限:

[accountStore requestAccessToAccountsWithType:facebookAccountType
                                          options:
     @{
                              ACFacebookAppIdKey : ...,
                        ACFacebookPermissionsKey : @[ @"email", @"read_stream", @"user_groups", @"user_videos" ]),
     }
                                       completion:^(BOOL granted, NSError *error) { ...

你需要检查Facebook留档,找出你需要从用户那里请求什么权限,并填写它们为ACFacebookPermissionsKey

 类似资料:
  • 在我的web应用程序中,我使用Firebase进行身份验证,要访问任何API,我必须从Firebase进行身份验证。 问题:如何在Postman中获取firebase的访问令牌? 我有两种解决此问题的方法: 1) 在postman中从firebase获取访问令牌,并将该访问令牌存储在postman global env中。变量,然后我可以执行其他API请求。(这里我不知道如何在邮递员那里获得访问令

  • 我有一个由 AAD B2C 访问令牌保护的 REST API。我现在想要添加可用于 API 负载测试的 Web 测试。 我跌跌撞撞地从AADB2C为我的测试用户获取了一个有效的访问令牌。我想以某种方式从对AADB2C的REST API调用中获取一个令牌作为响应。 在网上朝这个方向看,我已经找到了许多指向这个没有记录的endpoint的页面 其中我需要提供一些参数。到目前为止,我发现 < li >客

  • 获取访问令牌的文档中的第一步是“将用户引导到我们的授权URL”。那到底是什么意思?没有提供链接或任何东西。它还说“公司名称、联系电子邮件和隐私政策URL是开始提交的必要条件。”我们的应用程序没有隐私政策...只是一个简单的标签提要。我不明白为什么有一个简单的标签提要那么复杂。 是否有一个等待时间来获得批准的应用程序..如果它得到批准...在获得访问令牌之前,我必须获得批准吗?这在任何地方都没有概述

  • 下面是security.xml文件,我正在使用它合并spring-security-oauth2。 我必须在spring-security.xml文件中做哪些更改,以便在JSON中发送查询参数?

  • 我正在尝试通过Twython验证用户的Twitter帐户 我得到了 Twitter API返回401(未经授权)、无效/过期令牌 回溯(最近一次调用): 文件“/Users/bharatagarwal/my-venv/lib/python2.7/site-packages/django/core/handers/base.py”,第149行,get_response-response=self。p