我正在尝试使用图形 API 在我的帐户下的一个页面中创建新专辑。这是公司页面,我知道页面 ID。
我尝试过的失败:
query = string.Format("me/page?name={0},albums?name={1}", PageID, AlbumTitle);
而且我也尝试过失败:
query = string.Format("{0}/albums?name={1}, PageID, AlbumTitle);
我正在尝试使用图形 API 在我的帐户下的一个页面中创建新专辑。这是公司页面,我知道页面 ID。
我尝试过的失败:
query = string.Format("me/page?name={0},albums?name={1}", PageID, AlbumTitle);
而且我也尝试过失败:
query = string.Format("{0}/albums?name={1}, PageID, AlbumTitle);
正如Graph API 文档所说,您需要向PAGE_ID/albums
. 使用 C# facebook api 你应该做这样的事情:
private string GetOrCreateAlbumId(FacebookClient api, string profileId, string name, int albumNumber = 0)
{
var fullName = albumNumber == 0 ? name : string.Format("{0}_{1}", name, albumNumber);
dynamic d = api.Get(string.Format("{0}/albums", profileId), new { fields = "id,name,count", limit = "9999" });
var data = (JsonArray)((JsonObject)d).Values.First();
try
{
if (data == null || data.Any() == false || data.FirstOrDefault(x => ((JsonObject)x)["name"].ToString() == fullName) == null)
{
// no such album - create new one
var param = new { name = fullName };
var album = api.Post(string.Format("{0}/albums", profileId), param);
return ((JsonObject)album)["id"].ToString();
}
else
{
var album = (JsonObject)data.First(x => ((JsonObject)x)["name"].ToString() == fullName);
int imageCount = 0;
if (album.ContainsKey("count"))
{
int.TryParse(album["count"].ToString(), out imageCount);
}
if (imageCount > 500)
{
albumNumber++;
return this.GetOrCreateAlbumId(api, profileId, name, albumNumber);
}
return album["id"].ToString();
}
}
catch (Exception ex)
{
var msg = string.Format("Data: {0}\r\nAlbum Name: {1}\r\nAlbum number: {2}", data, name, albumNumber);
throw new Exception(msg, ex);
}
}
此函数执行以下操作:
name
已经存在 - 如果存在:
name_1
等name_2
相册。如果没有这样的专辑 - 创建新专辑并返回其 ID:
var param = new { name = fullName };
var album = api.Post(string.Format("{0}/albums", profileId), param);
return ((JsonObject)album)["id"].ToString();
编辑
关于profileId
字段 - 我使用此功能来调用授权我的应用程序的各种用户。在您的情况下,这将是 pageId。