如何在Facebook API for iPhone中明确获取访问令牌?

时间:2011-04-18 04:11:55

标签: iphone facebook

我最近下载了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”]返回名称。但是,[result objectForKey:@“access_token”]不返回任何内容。这非常令人沮丧,因为我需要将访问令牌传递给我的Google App Engine用户管理后端以创建新用户。所以,希望我所包含的代码能够明确我的认证策略(无论它是什么)。有谁知道我在这种情况下如何获得访问令牌?如果你能帮我解决我需要包含的头文件等问题,我将不胜感激。

谢谢,

约翰

2 个答案:

答案 0 :(得分:3)

我做的与你完全一样。我正在制作自己的HTTP请求,所以我需要accessToken,而且iOS Facebook SDK不记得过去启动的accessToken,即使是没有过期的请求!

调用[_facebook authorize:permissions delegate:self];在fbDidLogin委托调用中,您可以轻松地拉(假设您在_facebook中保留了facebook对象):

- (void)fbDidLogin {
NSString *accessToken = _facebook.accessToken;
NSDate *expirationDate = _facebook.expirationDate;
}

瞧。

要通过应用启动来处理持久性,您可以保存此数据并在任何请求之前手动设置这些访问者。

答案 1 :(得分:1)

成功完成登录后,您可以使用

进行检索
[[FBSession activeSession] accessToken];