我正在尝试使用在 iOS 上运行的 Unity Facebook SDK 发布到 Facebook 页面。据我了解,要做到这一点,我需要带有
manage_pages
和 publish_pages
的页面访问令牌。我知道我可以从 /me/accounts?fields=access_token
获取它,但如何告诉 AccessToken.CurrentAccessToken
使用我的页面访问令牌?
现在我正在使用以下内容:
var wwwForm = new WWWForm();
//wwwForm.AddField ("access_token", "A-T I NEED");
wwwForm.AddBinaryData("image", screenshot, "InteractiveConsole.png");
wwwForm.AddField("message", "herp derp. I did a thing! Did I do this right?");
FB.API("/PAGE-ID/photos", HttpMethod.POST, HandleResult, wwwForm);
我尝试手动添加访问令牌,但这不起作用(所以我将其注释掉)。
这样我就收到了一个错误,告诉我我需要
publish_actions
,这是不正确的,因为我没有尝试以用户身份发布。如果我也得到 publish_actions
,帖子就会上线,但会在用户讲话时发布到页面上。 (用户也是管理员)
有什么想法吗?谢谢!
因此,我向 Facebook 提交了一份错误报告,结果是:“……目前不支持此功能。”这只是意味着现在可以使用您通过
FB.API
中的 FB.API
获取的页面访问令牌。他们不会在文档中告诉您相关信息。
作为解决方法,我只需使用
UnityWebRequest
,如下所示:
IEnumerator UploadToPage(byte[] screenshot) {
var wwwForm = new WWWForm();
wwwForm.AddField("message", "herp derp. I did a thing! Did I do this right?");
wwwForm.AddBinaryData("image", screenshot, "Test.png");
string url = "https" + "://graph.facebook.com/"+ PageID + "/photos";
url += "?access_token=" + PageAccessToken;
using (UnityWebRequest www = UnityWebRequest.Post(url, wwwForm))
{
yield return www.Send();
if (www.isError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
Debug.Log(url);
}