iOS SDK的Facebook图形API问题

时间:2011-07-20 07:23:00

标签: ios facebook sdk facebook-graph-api

我遇到了Facebook图形API的问题,更确切地说是iOS SDK。我的代码曾经正常工作但现在我在尝试使用它时得到了这个错误描述(获取个人订阅源,朋友的订阅源,朋友列表......):

Err details: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x7113b80 {error=<CFBasicHash 0x7113910 [0x176e400]>{type = mutable dict, count = 2,
entries =>
    2 : <CFString 0x7121e60 [0x176e400]>{contents = "type"} = <CFString 0x7113a20 [0x176e400]>{contents = "OAuthException"}
    3 : <CFString 0x7113b40 [0x176e400]>{contents = "message"} = <CFString 0x7113a00 [0x176e400]>{contents = "An access token is required to request this resource."}
}
}

有人会知道它可能来自哪里吗?

这也是我的源代码:

facebook = [[Facebook alloc] initWithAppId:@"00000000000000"];
    NSArray *permissions =  [[NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"offline_access",nil] retain];
    [facebook authorize:permissions delegate:self];
    [facebook requestWithGraphPath:@"1342568689/feed" andDelegate:self];

2 个答案:

答案 0 :(得分:0)

嗯,我肯定发现Facebook SDK本身有点棘手,但这里有一些我看到的东西,希望有所帮助。

首先,我认为您在输入问题所附的代码时可能会错误地复制了几种方法。 “facebook”对象的分配是设置委托的位置,“authorize”方法仅接受参数的NSMutableDictionary。为清楚起见,代码应如下所示:

facebook = [[Facebook alloc] initWithAppId:@"00000000000000" andDelegate:self];
NSArray *permissions =  [[NSArray arrayWithObjects:@"read_stream", @"publish_stream", @"offline_access",nil] retain];
[facebook authorize:permissions];
[facebook requestWithGraphPath:@"1342568689/feed" andDelegate:self];

除此之外,唯一真正的问题是,在应用程序有时间完全授权之前,您正在调用图API。这些调用都是异步完成的,因此在授权进程实际返回有效访问令牌之前,主线程正在进行requestWithGraphPath:andDelegate调用。您可以将此调用或任何其他类似的调用移动到按钮onClick处理程序中,或者进行更直接的测试,进入Facebook会话代理方法fbDidLogin

希望有所帮助!

答案 1 :(得分:0)

此外,offline_access正在被删除,他们建议检查app init以扩展令牌 - 请参阅文档,但在此处获取片段:

-(void)fbDidExtendToken:(NSString *)accessToken expiresAt:(NSDate *)expiresAt { NSLog(@"token extended"); [self storeAuthData:accessToken expiresAt:expiresAt]; }