iOS - Facebook通过应用程序开放图表共享是成功的,但看起来并不像我想要的那样在Facebook上

时间:2014-03-21 04:58:41

标签: ios iphone facebook facebook-graph-api facebook-ios-sdk

我有一个用于拍照的iPhone应用程序。我刚刚完成了为这个应用添加Facebook共享功能。

我在这里浏览了整个页面:https://developers.facebook.com/docs/ios/open-graph

我按照所有说明操作,将代码复制并粘贴到xcode中。我唯一没做过的就是页面底部的一个名为“深层链接”的部分,但现在这并不重要。

完成所有这些后,我的应用程序可以成功地将图像分享到Facebook。但是,它并没有按我需要的方式共享。

当我进入我的脸书页面查看分享时,你甚至都不知道它在那里。我必须滚动几乎一半的页面,然后它在左下角。

以下是在台式计算机上查看共享位于我的脸书页面上的屏幕截图:

enter image description here

以下是使用Facebook App for iPhone时的分享情况(我涂黑了我的名字):

enter image description here

这些看起来都很糟糕。以下是我想要完成的两个例子。

以下是当我将这张照片分享到我的页面并在桌面计算机上查看时,此应用中名为“Frontback”的照片的样子:

enter image description here

iPhone的Facebook应用程序看起来也一样。

我能说的唯一区别是我的共享网址中有“/ activity /”,其中Frontback应用程序共享的Facebook URL中有“photo.php”。

我无法弄清楚如何让我的应用程序的共享看起来像Frontback应用程序中的共享。

非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

您创建的帖子对我来说似乎很有意义。开放式图形馈送总是美观且比正常馈送更有意义。

您看到的Frontback帖子是简单photo上传,这不是Feed。我的意思是这一切都取决于您的要求,您的应用程序究竟想要做什么。

  • 如果您只是希望通过应用程序(如Frontback)显示一些照片,则可以使用API​​ \POST /photos来避免打开图表并发布照片。

  • 但是如果你想提供一个可以将用户重定向到应用程序的链接,你应该立即使用你正在使用的内容。

另一件事,当你说 -

  

当我进入我的脸书页面查看分享时,你甚至都不知道它在那里。我必须在页面的一半左右滚动,然后它在左下角。

这就是开放图形的美妙之处,它可以在您的时间轴中支持应用程序的所有活动,而不会不必要地进行状态更新并充斥您的时间线。这些故事出现在您/您的朋友墙和自动收报机的顶部。您还可以通过点击activity log -

的故事中的时间来查看实际故事

(活动日志)

enter image description here

(实际故事)

enter image description here

答案 1 :(得分:0)

- (void)requestPermissionAndPost {
    [FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObjects:@"publish_actions", @"publish_checkins",nil]
                                          defaultAudience:FBSessionDefaultAudienceEveryone
                                        completionHandler:^(FBSession *session, NSError *error) {
                                            if (!error) {
                                                // Now have the permission
                                                [self postOpenGraphAction];
                                            } else {
                                                // Facebook SDK * error handling *
                                                // if the operation is not user cancelled
                                                if (error.fberrorCategory != FBErrorCategoryUserCancelled) {
                                                    [self presentAlertForError:error];
                                                }
                                            }
                                        }];
}
- (void)postOpenGraphAction
{
    FBRequestConnection *newConnection = [[FBRequestConnection alloc] init];
    FBRequestHandler handler =
    ^(FBRequestConnection *connection, id result, NSError *error) {
        // output the results of the request
        [self requestCompleted:connection forFbID:@"me" result:result error:error];
    };

    UIImage *img = imageView.image;
    NSString *message = [NSString stringWithFormat:@"%@ %@ #DealsHype",msg.text,hashtagFromStore];
    FBRequest *request=[[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:@"me/photos" parameters:[NSDictionary dictionaryWithObjectsAndKeys:UIImageJPEGRepresentation(img, 0.7),@"source",message,@"message",@"{'value':'EVERYONE'}",@"privacy", nil] HTTPMethod:@"POST"];


    [newConnection addRequest:request completionHandler:handler];
    [self.requestConnection cancel];
     self.requestConnection = newConnection;
    [newConnection start];
}

如果要上传像Frontback

这样的大图片,可以上传包含某些消息的图片