Facebook Graph API 在不使用用户登录的情况下调用

Facebook Graph API Call Without Using User Login

我正在努力使用 Facebook Graph API 从 public Facebook 页面获取帖子,而无需用户登录。使用 here 中的步骤我得到了我的令牌需要,因为最终用户没有登录,并且页面是 public。在我的应用程序中,我有以下内容:

-(IBAction)testing {
    NSString *token = @"MYAccessToken";
    FBSession* session = [[FBSession alloc] initWithPermissions:@[@"manage_pages"]];
    FBAccessTokenData* tokenData =
    [FBAccessTokenData createTokenFromString:token
                                 permissions:@[@"manage_pages"]
                              expirationDate:nil
                                   loginType:FBSessionLoginTypeNone
                                 refreshDate:nil];


    [session openFromAccessTokenData:tokenData completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
        if ([session isOpen]) {
            [self performGraph];
        }
    }];
}
-(void)performGraph {
    NSLog(@"Go");
    [FBRequestConnection startWithGraphPath:@"/{your-page}/posts"
                                 parameters:nil
                                 HTTPMethod:@"GET"
                          completionHandler:^(
                                              FBRequestConnection *connection,
                                              id result,
                                              NSError *error
                                              ) {
                              NSLog(@"Result%@", result);
                              /* handle the result */
                          }];
}

它运行方法 performGraph 正如我在我的控制台中看到的那样,让我相信 FBSession 必须打开,因为它就是它运行它的地方。但是,我在 FBSDKLog 中收到以下错误消息:Error for request to endpoint '/{your-page}/posts': An open FBSession must be specified for calls to this endpoint.

如果 FBSession 未打开,它甚至不应该尝试执行 Graph API 调用,但它告诉我它需要一个打开的 FBSession。有人可以帮我一下吗?

正如 documentation for startWithGraphPath:parameters:HTTPMethod:completionHandler: 所提供的那样,该方法使用 [FBSession activeSession],并且由于您正在创建一个新的会话对象,它不是 activeSession,这就是您有效调用图形的原因API 会话为零。

您可以通过调用 FBSession.activeSession 将您创建的会话设置为 activeSession,或者您可以使用会话实例创建 FBRequest 对象,然后使用 FBRequest 创建 FBRequestConnection。