在我的 iOS 应用程序中,我想在 Facebook 页面上作为 Facebook 页面发帖。
我通过用户通过“我/帐户”端点检索页面访问令牌。但是,我不确定如何使用该页面访问令牌创建 FBSession 以创建发布请求。
页面访问令牌是一个字符串,我通过向用户询问“manage_pages”和“publish_streams”权限来正确获取它。
是否有捷径可寻?我一直在查看 fetchFBAccessTokenData 但不确定如何使用它。
在我的 iOS 应用程序中,我想在 Facebook 页面上作为 Facebook 页面发帖。
我通过用户通过“我/帐户”端点检索页面访问令牌。但是,我不确定如何使用该页面访问令牌创建 FBSession 以创建发布请求。
页面访问令牌是一个字符串,我通过向用户询问“manage_pages”和“publish_streams”权限来正确获取它。
是否有捷径可寻?我一直在查看 fetchFBAccessTokenData 但不确定如何使用它。
答案是——这花了我很长时间才找到——initWithSession:FBSession.activeSession
应该是initWithSession:nil
,并且访问令牌应该在parameters
NSDictionary 字段中设置为[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
非常感谢 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];