我想制作使用Facebook凭据登录我的应用程序的iPhone应用程序

时间:2011-08-01 15:37:15

标签: iphone facebook

我使用了以下代码

facebook = [[Facebook alloc] initWithAppId:APPLICATION_ID];
    facebook.accessToken    = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
    facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];

NSArray * _permissions =  [[NSArray arrayWithObjects: @"read_stream",@"user_about_me",nil] retain];

if ([facebook isSessionValid] == NO) 
{
    [facebook authorize:_permissions delegate:self];
}
[facebook requestWithGraphPath:@"me" andDelegate:self];

我想访问用户个人资料信息。但我收到以下错误信息。

 REsult:Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x6d41090 {error=<CFBasicHash 0x6d91570 [0x2b4a380]>{type = mutable dict, count = 2,
entries =>
    2 : <CFString 0x6d8c990 [0x2b4a380]>{contents = "type"} = <CFString 0x6d1af30 [0x2b4a380]>{contents = "OAuthException"}
    3 : <CFString 0x6d91b90 [0x2b4a380]>{contents = "message"} = <CFString 0x6d3a000 [0x2b4a380]>{contents = "An active access token must be used to query information about the current user."}

可以帮助我吗?我是iphone开发的新手。

提前感谢你。

1 个答案:

答案 0 :(得分:2)

在授权过程完成之前,您无法从Facebook请求信息。当您调用authorize时,它只会启动自动化过程(它是异步的)。您必须实现FBSessionDelegate以侦听何时调用fbDidLogin方法。只有这样才能对数据执行请求。

一种选择是创建一个包裹Facebook类的控制器,并传入一个完成块,一旦用户完成授权过程就会调用该完成块。