如何在iPhone的Facebook API中显式获取访问令牌?

问题描述

| 我最近下载了Facebook iPhone演示应用程序。我做了几次尝试来掌握身份验证过程,但我完全感到困惑。在此版本的API中,似乎有很多示例代码已过时。 在主视图控制器的.m文件中,开始时具有以下内容
#import \"FBConnect.h\"
需要Facebook信息的按钮使用此行,与演示应用程序相同:
[_facebook requestWithGraPHPath:@\"me\" andDelegate:self]; 
这将调用以下方法
- (void)request:(FBRequest *)request didLoad:(id)result {
我已经将我的功能修改为这种方法。我从Facebook提取了一些我需要的东西,然后通过HTTP POST命令将它们发送到我的后端。例如,[result objectForKey:@ \“ id \”]返回id,[result objectForKey:@ \“ name \”]返回名称。但是,[结果objectForKey:@ \“ access_token \”]不会返回任何内容。这非常令人沮丧,因为我需要将访问令牌传递给我的Google App Engine用户管理后端以创建新用户。因此,希望我所包含的代码能够使我的认证策略变得清晰(无论它是什么)。有谁知道我在这种情况下如何获得访问令牌?如果您可以帮助我确定需要包含哪些头文件,我将不胜感激。 谢谢, 约翰     

解决方法

我正在做与您完全相同的事情。我正在发出自己的HTTP请求,因此我需要accessToken,此外,iOS Facebook SDK甚至在没有过期请求的情况下都不会记住过去启动时的accessToken! 调用[_facebook authorize:permissions委托人:self]之后;在fbDidLogin委托调用中,您可以轻松拉出(假设您在_facebook中保留了facebook对象):
- (void)fbDidLogin {
NSString *accessToken = _facebook.accessToken;
NSDate *expirationDate = _facebook.expirationDate;
}
Voilà。 要通过应用启动来处理持久性,您可以保存此数据并在任何请求之前手动设置这些访问器。     ,成功完全登录后,您可以使用进行检索,
[[FBSession activeSession] accessToken];