2

我试图在我的应用程序中使用Titanium 中publish_actions,但我得到了"sdk facebook error 5"。我看到Facebook最近改变了这个权限,现在你必须提交应用程序、截图和其他东西来获得批准。有一些关于作为开发人员使用此权限的文档,例如 scope 属性,但我没有找到关于 Titan 的文档。我使用我的 Facebook 帐户,它是应用程序的管理员。

此代码当前不起作用:

        fb.permissions = ['publish_actions'];  
        //I've also used fb.permissions = ['publish_stream'];  
        fb.authorize();

        // ...
        // ...

        // Now create the status message after you've confirmed that authorize() succeeded
        fb.requestWithGraphPath('me/feed', {message: "Trying out FB Graph API and it's fun!"}, 
                 "POST", function(e) {
            if (e.success) {
                alert("Success!  From FB: " + e.result);
            } else {
                if (e.error) {
                    alert(e.error);
                } else {
                    alert("Unkown result");
                }
            }
        });

谢谢!

4

1 回答 1

0

您是否在developers.facebook.com 上设置了应用程序?如果没有,您需要先这样做,然后才能使用 Facebook。

如果你这样做了,这是我的工作身份验证代码(我可以将图像、视频和状态更新发布到个人资料和我管理的任何页面,并且我的应用程序仍在测试中 - 我还没有通过 Facebook 审批流程)。

facebook = require('facebook');
facebook.appid = 'xxxxxxxxxxxxxxxxx'; //app id you'll get from Facebook when you create an app
facebook.permissions =  ['publish_actions, manage_pages'];

 facebook.createLoginButton({
    style : facebook.BUTTON_STYLE_WIDE
});

通过 Facebook 的弹出窗口进行身份验证并获得必要的权限后,您可以像这样发布:

var acc = fb.getAccessToken();
facebook.requestWithGraphPath('me/feed?access_token='+ acc, {message: data}, "POST", showRequestResult); 

数据只是您要在状态更新中发布的文本。

如果您让其他人与您一起测试该应用程序,请确保在您的 Facebook 应用程序设置下将他们添加为测试人员,否则他们无法进行身份验证。

编辑:应该提到,如果您使用 createLoginButton() 它会为您调用 authorize() 。这就是为什么我的代码没有那个调用。

于 2015-01-26T05:04:17.833 回答