更新代码:
我有一个待批准的开放图表操作。我从Facebook收到一条消息说:
您的代码目前已配置为发布流故事。您必须更改代码,以便在测试用户触发操作时生成一个打开的图形故事。请进行适当的更改并重新提交。
我遵循了有关发布操作的所有教程,并且我的测试都成功发布到我的应用时间线。问题是我的应用程序(页面选项卡)已经启动并运行 - 所以我想更新它并添加这些新操作。
Facebook是否正在查看当前页面标签中的代码 - 这是使用fmbl posttofeed分享按钮 - 还是他们正在查看我使用新操作执行的测试?有人能够对此有所了解吗?
这是我在测试页面中用来发布操作的代码:
function postShare() { FB.api( '/me/namespace:share', 'post', { photo: 'https://domain.com' }, function(response) { if (!response || response.error) { alert('Error occurred : ' + response.error); } else { alert('Share was successful! Action ID: ' + response.id); } }); } // Load the SDK Asynchronously (function(d){ var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) {return;} js = d.createElement('script'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; ref.parentNode.insertBefore(js, ref); }(document)); // Init the SDK upon load window.fbAsyncInit = function() { FB.init({ appId : 'APP ID', // App ID channelUrl : '//channel url', // Path to your Channel File status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); // listen for and handle auth.statusChange events FB.Event.subscribe('auth.statusChange', function(response) { if (response.authResponse) { // user has auth'd your app and is logged into Facebook FB.api('/me', function(me){ if (me.name) { document.getElementById('auth-displayname').innerHTML = me.name; } }) document.getElementById('auth-loggedout').style.display = 'none'; document.getElementById('auth-loggedin').style.display = 'block'; } else { // user has not auth'd your app, or is not logged into Facebook document.getElementById('auth-loggedout').style.display = 'block'; document.getElementById('auth-loggedin').style.display = 'none'; } }); // respond to clicks on the login and logout links document.getElementById('auth-loginlink').addEventListener('click', function(){ FB.login(); }); document.getElementById('auth-logoutlink').addEventListener('click', function(){ FB.logout(); }); } function loginUser() { FB.login(function(response) { }, {scope:'publish_actions, email'}); }
我看不出这是如何配置发布流故事而不是开放图故事的?任何人都可以帮忙解决这个问题,这让我感到疯狂,无法找到任何可以表明我正在做的事情就是不发布行动。
但是,如果他们正在审核我的操作,他们正在查看我的实时应用中的代码,那么当然它没有设置为触发任何打开的图形故事 - 因为它们还没有被批准!
非常感谢任何帮助。
非常感谢
答案 0 :(得分:1)
您的问题并不完全清楚,但publish_actions
和publish_stream
Permissions都允许您发布Open Graph操作。但是publish_stream
权限涵盖了许多其他发布类型,也是可选的,如果用户删除了该权限,您将无法为这些用户发布OG操作。
更新您的身份验证代码,以代替/ {/ p>请求publish_actions
答案 1 :(得分:0)
终于搞定了。脚步:
1.添加了“Publish_action”权限
2.在FB Graph API Explorer上成功测试
3.修改了我的Javascript(与上面的postShare()
方法类似的代码)
FB.api('/me/namespace:purchase',
'post',
{ product: 'samples.ogp.me/367683346642550'; },
function(response) {
if (!response || response.error) {
alert('Error occured'+response.error);
} else {
alert('Post was successful! Action ID: ' + response.id);
}
});
答案 2 :(得分:0)
Facebook测试人员需要在生产服务器上运行的实际代码。他们将使用Facebook测试用户执行您提交操作时描述的所有步骤。他们不会使用已发布的故事。他们可能会使用“Open Graph Test User”。
这里有两个选项:
尝试向每个用户发布操作,如果它不起作用,请发布流(以便测试用户获取已发布的操作但您的真实用户使用旧代码发布)
---或---
确定用户是否为测试用户(通过记录测试用户ID)并向他提供新代码。
无论如何,实际操作流程必须在生产服务器上可执行。
答案 3 :(得分:0)
基本上,当您使用开放图形故事时,您无法在相册或任何其他类型的帖子上发布内容。例如,不允许以下内容:
$data = $facebook->api('/me/photos', 'post', $args);//disallowed
$facebook->api(
'me/invig-test:share',
'POST',
array(
'app_id' => $configParam['appId'],
'type' => "test:photo",
'photo' => "http://samples.ogp.me/574859819237737",
'title' => "a photo",
'image[0][url]'=>"http://www.testapp.com/".$imgFile,
'image[0][user_generated]'=>'true',
'message' => $comments,
'fb:explicitly_shared'=>true,
)
);
而只做“分享”:
$facebook->api(
'me/invig-test:share',
'POST',
array(
'app_id' => $configParam['appId'],
'type' => "test:photo",
'photo' => "http://samples.ogp.me/574859819237737",
'title' => "a photo",
'image[0][url]'=>"http://www.testapp.com/".$imgFile,
'image[0][user_generated]'=>'true',
'message' => $comments,
'fb:explicitly_shared'=>true,
)
);