Facebook iOS SDK发布为页面

4
在我的iOS应用中,我想以Facebook页面的身份发布内容。
我通过用户从 'me/accounts' 端点检索页面访问令牌。然而,我不确定如何使用该页面访问令牌创建FBSession以创建帖子请求。
页面访问令牌是一个字符串,我通过请求用户获得 'manage_pages' 和 'publish_streams' 权限正确地获取了它。
是否有简单的方法来解决这个问题?我一直在查看fetchFBAccessTokenData,但不确定如何使用它。
2个回答

4
答案是 - 而且我花了很长时间才找到 - initWithSession:FBSession.activeSession 应该是 initWithSession:nil,并且访问令牌应该直接在 parameters 字典字段中设置为 [parameters setObject:yourAccessToken forKey:@"access_token"]。FBSession.activeSession 中的访问令牌会覆盖参数中的 access_token(在我看来不应该这样),使帖子显示为“粉丝”帖子,而不是作为页面的帖子。
[d addObject:yourFetchedAccessTokenString forKey:@"access_token"];
FBRequest *request = [[FBRequest alloc] initWithSession:nil
                                              graphPath:graphPath
                                             parameters:d
                                             HTTPMethod:@"POST"];

当然,现在还有其他问题,比如访问令牌的有效期限,这需要令牌缓存策略:https://developers.facebook.com/docs/howtos/token-caching-ios-sdk/
在此找到答案:https://github.com/facebook/facebook-ios-sdk/pull/483

谢谢您的回答,最终我只是使用了正常的HTTP POST请求,跳过了SDK。我会很快尝试您的答案,并在成功后将其标记为答案! - JonathanC
附注: 上述代码不再适用于Facebook iOS SDK 3.x。 - Raptor

1
感谢James O'Brien的代码。除此之外,您可能还需要以下代码:
FBRequestConnection *con = [[FBRequestConnection alloc] init];
[con addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error){
    NSLog(@"facebook result >> %@", result);
    [self cancelfbshare:nil];

}];
[con start];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接