我在登录页面上集成了facebook,现在我尝试使用测试应用程序调用内置操作:books.rates。
我的应用获得了有效的access_token,并创建了新的Feed项而没有任何问题。但是,当我尝试编写books.rates API调用时,只有当记录的用户是真人(在我的测试中是我,也是应用程序管理员)时才有效,并且当我尝试使用错误400时总是失败给测试用户评价一本书。
在这两种情况下,代码都是相同的(只有access_token和userid更改)并且具有" publish_actions"预先启用。我想我在Test App配置上遗漏了一些东西,但我现在真的输了。
谢谢!
更新1 这是执行操作的代码。它是一个测试代码,所以它非常基本
Dictionary<string, string> postInfo = new Dictionary<string, string>();
postInfo["book"] = "http://www.whakoom.com/comics/6jMl7/52/4";
postInfo["rating:value"] = "4";
postInfo["rating:scale"] = "5";
postInfo["fb:explicitly_shared"] = "true";
string graphUrl = string.Format("https://graph.facebook.com/v2.1/{0}/books.rates?access_token={1}", FbUserID, FbAccessToken);
string fbResp = PostPageContent(graphUrl, postInfo);
private static string PostPageContent(string url, Dictionary<string,string> postData)
{
string postInfo = string.Empty;
foreach(string key in postData.Keys)
{
if (postInfo.Length > 0)
postInfo += "&";
postInfo += string.Format("{0}={1}", HttpContext.Current.Server.UrlEncode(key), HttpContext.Current.Server.UrlEncode(postData[key]));
}
var request = WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postInfo.Length;
StreamWriter streamOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(postInfo);
streamOut.Close();
string retValue = string.Empty;
WebResponse response = request.GetResponse();
var reader = new StreamReader(response.GetResponseStream());
retValue = reader.ReadToEnd();
reader.Close();
return retValue;
答案 0 :(得分:0)
似乎测试用户的测试应用程序无法进行books.rates调用,直到主应用程序被批准。使用测试用户定位真实应用程序的api调用可以正常运行。