在我的iOS应用程序,我想发布在一个Facebook页面的Facebook页面。Facebook的iOS版SDK发布的第
我通过用户检索通过“我/账户”端点的页面访问令牌。但是,我不确定如何使用该页面访问令牌创建FBSession以创建发布请求。
页面访问令牌是一个字符串,我通过询问用户对“manage_pages”和'publish_streams的权限正确获得它。
有没有简单的方法来做到这一点?我一直在看fetchFBAccessTokenData,但我不知道如何使用它。
在我的iOS应用程序,我想发布在一个Facebook页面的Facebook页面。Facebook的iOS版SDK发布的第
我通过用户检索通过“我/账户”端点的页面访问令牌。但是,我不确定如何使用该页面访问令牌创建FBSession以创建发布请求。
页面访问令牌是一个字符串,我通过询问用户对“manage_pages”和'publish_streams的权限正确获得它。
有没有简单的方法来做到这一点?我一直在看fetchFBAccessTokenData,但我不知道如何使用它。
答案是 - 这我花了很久才找到 - initWithSession:FBSession.activeSession
应initWithSession: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
万分感谢詹姆斯· '布里恩的代码。除此之外, 你可能需要下面的代码:
FBRequestConnection *con = [[FBRequestConnection alloc] init];
[con addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error){
NSLog(@"facebook result >> %@", result);
[self cancelfbshare:nil];
}];
[con start];
感谢您的回答,我最终只是做了普通的HTTP POST请求,绕过SDK。我会很快尝试你的答案,并且如果我成功的话,将会标记为答案! – JonathanC 2013-05-16 17:16:07
*旁注*:上面的代码不再有效为Facebook的iOS SDK 3.X – Raptor 2013-06-27 06:12:48
哇感谢!我很高兴现在正在工作:) – 2014-04-08 12:17:47