Facebook的iOS版SDK发布的第

问题描述:

在我的iOS应用程序,我想发布在一个Facebook页面的Facebook页面。Facebook的iOS版SDK发布的第

我通过用户检索通过“我/账户”端点的页面访问令牌。但是,我不确定如何使用该页面访问令牌创建FBSession以创建发布请求。

页面访问令牌是一个字符串,我通过询问用户对“manage_pages”和'publish_streams的权限正确获得它。

有没有简单的方法来做到这一点?我一直在看fetchFBAccessTokenData,但我不知道如何使用它。

答案是 - 这我花了很久才找到 - initWithSession:FBSession.activeSessioninitWithSession:nil和访问令牌应设置方向在parameters NSDictionary的字段[parameters setObject:yourAccessToken forKey:@"access_token"]。 FBSession.activeSession中的访问令牌覆盖了参数中的access_token(它不应该成为IMHO),使得该帖子显示为“粉丝”帖子,而不是帖子作为页面。

[d addObject:yourFetchedAccessTokenString forKey:@"access_token"]; 
FBRequest *request = [[FBRequest alloc] initWithSession:nil 
               graphPath:graphPath 
              parameters:d 
              HTTPMethod:@"POST"]; 

当然现在也有其他的问题,比如访问令牌将持续多久,这需要令牌缓存策略及DCS:https://developers.facebook.com/docs/howtos/token-caching-ios-sdk/

找到答案在这里:https://github.com/facebook/facebook-ios-sdk/pull/483

+0

感谢您的回答,我最终只是做了普通的HTTP POST请求,绕过SDK。我会很快尝试你的答案,并且如果我成功的话,将会标记为答案! – JonathanC 2013-05-16 17:16:07

+0

*旁注*:上面的代码不再有效为Facebook的iOS SDK 3.X – Raptor 2013-06-27 06:12:48

+0

哇感谢!我很高兴现在正在工作:) – 2014-04-08 12:17:47

万分感谢詹姆斯· '布里恩的代码。除此之外, 你可能需要下面的代码:

FBRequestConnection *con = [[FBRequestConnection alloc] init]; 
[con addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error){ 
    NSLog(@"facebook result >> %@", result); 
    [self cancelfbshare:nil]; 

}]; 
[con start];