Facebook - 上传和标记图片(通过C#SDK)

时间:2014-04-28 08:17:54

标签: c# asp.net facebook facebook-graph-api

我正在使用C#.NET在Facebook上创建“页面标签”应用程序。在此应用程序中,用户可以将图片上传到应用程序所属页面的订阅源。用户应该在图片中自动标记。

我已经有了将图片上传到墙上的代码,但是每次尝试让用户获得标记似乎都不起作用。 这是我目前用于将图片上传到我的墙上的代码。

var parameters = new Dictionary<string, object>();
parameters.Add("url", "<url to image>");
parameters.Add("message", "Message to go with the picture");
parameters.Add("access_token", "<access_token of page this application belongs to>");
FacebookClient client = new FacebookClient("AccessToken");
client.Post("https://graph.facebook.com/page_ID/photos", parameters);

但是如何在此图片中标记用户?我假设用户应该登录我的应用程序,然后我应该以某种方式使用'用户ID'。但我所做的尝试似乎根本不起作用。

我尝试过的一件事就是通过在代码中直接插入我自己的'uid'来标记自己,如下所示:

parameters.Add("tags", new object[] { 
    new Dictionary<string, object>(){
        {"tag_uid", "<My own user id>"}, 
        {"x", "0"},
        {"y", "0"},
    }
});

我也试过这样的东西:

var tags = new[] {                        
    new { tag_uid = "<My own user id>", x = 0, y = 0 }
};
parameters.Add("tags", tags);

甚至

var tags = new[] {                        
    new { tag_text = "testing", x = 0, y = 0 }
};
parameters.Add("tags", tags);

如果我转到'Graph API Explorer'并在那里试用,那么我也会收到一条错误消息:

  

{          “错误”:{              “message”:“发生了未知错误。”,              “type”:“OAuthException”,              “代码”:1          }      }

但所有这些只会导致错误:“OAuthException - #1”发生了未知错误。“如果我注释掉标记部分,一切似乎都很完美。那么如何获取用户ID,然后在我上传的图片中标记他?

1 个答案:

答案 0 :(得分:1)

要添加标记,您需要使用标记端点进行单独调用。这是文档。 https://developers.facebook.com/docs/graph-api/reference/photo/tags/

向下滚动以查看示例通话。在PHP中它是这样的:

    * make the API call */

    $response = $facebook->api(
      "/{photo-id}/tags",
      "POST",
      array (
        'tags' => '[{\'tag_text\': \'Testing\'}]',
      )
    );

    /* handle the result */