2

我正在尝试在 Facebook 朋友的墙上发帖,我尝试了这两种方法,但都没有奏效:

1.

//post on wall
NSMutableDictionary *variables = [[NSMutableDictionary alloc]initWithCapacity:1];
[variables setObject:@"v" forKey:@"message"];

[graphref doGraphPost:[NSString stringWithFormat:@"1389799421/feed"] withPostVars:variables];
//post on wall

2.

 [_facebook requestWithGraphPath:@"1389799421/feed"
                      andParams:[NSMutableDictionary dictionaryWithObject:@"test wall post" forKey:@"message"]
                  andHttpMethod:@"POST"
                    andDelegate:self];

......我不明白为什么!在 facebook 网站上,我添加了捆绑包和权限。

4

2 回答 2

2

我正在尝试在 Facebook 朋友的墙上发帖

Facebook 最近在开发者博客中宣布,从 2013 年 2 月起,将无法再通过 API 发布到另一个用户的墙上:

移除通过 Graph API 向朋友墙发帖的功能

我们将删除通过 Graph API 向用户朋友的墙发帖的功能。具体来说,针对 [user_id]/feed 的 [user_id] 与会话用户不同的帖子,或 target_id 用户与会话用户不同的 stream.publish 调用将失败。如果您想允许人们发布到他们朋友的时间线,请调用提要对话框

所以我认为现在开始开发这样的功能是没有用的。

于 2012-11-07T22:19:40.150 回答
1

首先,您必须使用发布权限打开会话。具体来说,您必须请求publish_stream许可。

NSArray * permissions = [[NSArray alloc] initWithObjects:@"publish_stream", nil];
return [FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
  [self sessionStateChanged:session
                      state:status
                      error:error];
}]; 

如果您具有发布权限,则可以创建和发送请求。确保包含access_token作为参数之一。如果不这样做,您将收到身份验证错误。

NSDictionary * postParameters = [NSDictionary dictionaryWithObjectsAndKeys:_textView.text, @"message", FBSession.activeSession.accessToken, @"access_token", nil];
NSString * graphPath = @"ID_NUMBER_HERE/feed";
FBRequest * request = [FBRequest requestWithGraphPath:graphPath parameters:postParameters HTTPMethod:@"POST"];
[[request initWithSession:FBSession.activeSession graphPath:graphPath parameters:postParameters HTTPMethod:@"POST"] startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
  NSLog(@"Successful posted to Facebook");
  }];
}
于 2012-11-07T21:56:55.233 回答