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。
我正在努力使用 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。