0

好的,我知道如何发布到用户的墙上(时间线?),效果很好。

我想要的是当用户在他的 iPhone 上做某些事情时,它应该作为一个帖子出现在 APP 的墙上。该帖子应以用户的名义。

就像是:

幸运的卢克 说:大家好

Zaphod Beeblebrox 开始使用 Awesomeapp

加:只有应用程序的用户应该能够发布到应用程序的墙上(我看到页面的«管理权限»部分的设置,我可以设置谁可以发布到墙上。我不希望每个人都发帖)

如果我是对的,该帖子也会自动出现在用户的提要中,不是吗?还是我必须在用户的墙上发第二个帖子?

当用户首次使用该应用程序时,我请求以下权限:@"user_photos",@"user_videos",@"manage_pages",@"read_stream",@"publish_stream",@"user_checkins",@"friends_checkins",@"电子邮件",@"user_location"

(最近我在某处读到时添加了 read_stream 和 manage_pages ——但没有帮助:)

这是我用来发帖的一段代码:

NSString *graphPath = [NSString stringWithFormat: @"/%@/feed?access_token=%@", FBAppID, [FBAccessToken stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
    NSLog(@"graph path %@", graphPath);
    NSDictionary *postParams =
    @{
        @"Test": @"message"
    };


    [FBRequestConnection
     startWithGraphPath:graphPath
     parameters:postParams
     HTTPMethod:@"POST"
     completionHandler:^(FBRequestConnection *connection,
                         id result,
                         NSError *error) {

         if (error) {
             NSLog(@"error: domain = %@, code = %d, %@",
                          error.domain, error.code, error.description);
         } else {
             NSLog(@"Posted action, id: %@",
                          [result objectForKey:@"id"]);
         }
         // Show the result in an alert
     }];

返回错误 100(缺少消息或附件 - OAuthException)

我现在用谷歌搜索了两天,找不到任何合适的指导方针......帮助!:)

[编辑]我可能正在做一些事情......

似乎NSDictionary *postParams @{@"Test": @"message"};是问题所在。当我使用正确[[NSDictionary alloc] initWithObjectsAndKeys: ...];时,它似乎工作......我们会看到:)

[编辑]好吧-我应该休息一下,看来...

使用 @{...} 初始化字典首先需要键,然后是对象,而 [NSDictionary dictionaryWithObjectsAndKeys:...] 首先设置对象,然后是键...

我现在觉得有点傻...

4

1 回答 1

0

这就是我在我的代码中这样做的方式:

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"My app's name", @"name",
                               @"Some cool caption", @"caption",
                               @"Super description", @"description",
                               @"http://stackoverflow.com//", @"link",
                               nil];


[FBRequestConnection startWithGraphPath:@"me/feed"
                             parameters:params
                             HTTPMethod:@"POST"
                      completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

       .....
 }];

请注意GraphPath,它与您的略有不同。在我的Info.plist还有一个 facebookId 值:

<key>FacebookAppID</key>
<string>123456789876543</string>

和 facebook url 方案:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb123456789876543</string> (fb + your app id)
        </array>
    </dict>
</array>

我已经facebookSDK添加到项目中(我想你已经这样做了)

所以这些东西至少足以让我贴到我的墙上

所以请看看你的facebookAppID,也许里面有东西,以防万一这是官方的 facebook 教程

于 2012-10-16T21:36:07.010 回答