Facebook API:与测试用户一起发布时出错400,但与管理员合作

时间:2014-09-10 22:38:16

标签: facebook facebook-graph-api

我在登录页面上集成了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;

1 个答案:

答案 0 :(得分:0)

似乎测试用户的测试应用程序无法进行books.rates调用,直到主应用程序被批准。使用测试用户定位真实应用程序的api调用可以正常运行。