【问题标题】:Getting an open graph action approved - change publish_stream to publish_action获得批准的开放图形操作 - 将 publish_stream 更改为 publish_action
【发布时间】:2012-10-02 19:03:57
【问题描述】:

更新代码:

我有一个待批准的开放图表操作。我收到了来自 Facebook 的回信:

您的代码当前配置为发布直播故事。您必须更改代码,以便当测试用户触发操作时,它会生成一个开放的图表故事。请进行适当的更改并重新提交。

我遵循了有关发布操作的所有教程,并且我的测试都成功发布到了我的应用时间线。问题是我的应用程序(这是一个页面选项卡)已经启动并正在运行 - 所以我想更新它并添加这些新操作。

Facebook 是在查看我当前页面选项卡中的代码(使用 fmbl posttofeed 共享按钮),还是查看我使用新操作执行的测试?有人能对此有所了解吗?

这是我用于发布操作的测试页面中的代码:

函数 postShare() { FB.api( '/我/命名空间:共享', '邮政', {照片:'https://domain.com'}, 功能(响应){ if (!response || response.error) { alert('发生错误:' + response.error); } 别的 { alert('分享成功!Action ID: ' + response.id); } }); } // 异步加载 SDK (函数(d){ var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) {return;} js = d.createElement('脚本'); js.id = id; js.async = true; js.src = "//connect.facebook.net/en_US/all.js"; ref.parentNode.insertBefore(js, ref); }(文档)); // 加载时初始化 SDK window.fbAsyncInit = function() { FB.init({ appId : 'APP ID', // 应用 ID channelUrl : '//频道 url', // 频道文件的路径 status : true, // 检查登录状态 cookie : true, // 启用 cookie 以允许服务器访问会话 xfbml : true // 解析 XFBML }); // 监听并处理 auth.statusChange 事件 FB.Event.subscribe('auth.statusChange', function(response) { 如果(response.authResponse){ // 用户已验证您的应用并登录到 Facebook FB.api('/me', function(me){ 如果(我的名字){ document.getElementById('auth-displayname').innerHTML = me.name; } }) document.getElementById('auth-loggedout').style.display = 'none'; document.getElementById('auth-loggedin').style.display = 'block'; } 别的 { // 用户尚未验证您的应用,或未登录 Facebook document.getElementById('auth-loggedout').style.display = 'block'; document.getElementById('auth-loggedin').style.display = 'none'; } }); // 响应点击登录和注销链接 document.getElementById('auth-loginlink').addEventListener('click', function(){ FB.login(); }); document.getElementById('auth-logoutlink').addEventListener('click', function(){ FB.logout(); }); } 功能登录用户(){ FB.login(function(response) { }, {scope:'publish_actions, email'}); }

我看不到这是如何配置为发布流故事而不是开放图表故事的?任何人都可以帮助解决这个问题,这让我发疯了,找不到任何东西表明我正在做的不是发布行动。

但是,如果他们在查看我的操作时正在查看我的实时应用程序中的代码,那么它当然不会设置为触发任何打开的图表故事 - 因为它们尚未获得批准!

任何帮助将不胜感激。

非常感谢

【问题讨论】:

    标签: facebook-opengraph publish


    【解决方案1】:

    您的问题并不完全清楚,但 publish_actionspublish_stream Permissions 都允许您发布 Open Graph 操作。但是,publish_stream 权限涵盖了许多其他发布类型,也是可选的,如果用户删除该权限,您将无法为这些用户发布 OG 操作。

    更新您的身份验证代码以请求 publish_actions 代替 / 以及

    【讨论】:

    • 谢谢伊吉。我的代码中已经有了这个: [code]function loginUser() { FB.login(function(response) { }, {scope:'publish_actions, email'}); }[code] 我还需要在其他任何地方添加它吗?谢谢
    • 如果这是用户登录应用程序的唯一方式,那么这就是您所需要的一切
    • 再次感谢伊吉。那正是我所想。你知道他们是否正在查看我用来测试操作的测试页面吗?或者您是否认为他们可能指的是我的应用程序中的页面 - 目前尚未使用新操作,所以不要引用 publish_action。我希望当他们告诉您某些事情需要改变时,他们会更具体!
    【解决方案2】:

    终于搞定了。脚步: 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);
               }
           });
    

    【讨论】:

    • 终于我让它工作了..... :) 步骤: 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('发生错误'+response.error); } else { alert('发布成功!Action ID: ' + response.id); } });
    • 嗨维维克。你的行动是否获得批准?我已经让它工作并发布到时间线,但 Facebook 说我正在使用发布流。您是否更改了代码中的任何内容?
    【解决方案3】:

    Facebook 测试人员需要在您的生产服务器上运行实际代码。他们将使用 Facebook 测试用户来执行您在提交操作时描述的所有步骤。他们不会使用已经发布的故事。他们可能会使用“Open Graph Test User”。

    你有两个选择:

    1. 尝试向每个用户发布操作,如果不起作用,请发布流(以便测试用户发布操作,但您的真实用户使用旧代码发布)

      --- 或 ---

    2. 识别用户是否是测试用户(通过记录测试用户 ID)并为他提供新代码。

    无论如何,真正的动作流必须在生产服务器上是可执行的。

    【讨论】:

      【解决方案4】:

      基本上,当您使用开放式图表故事时,您不能将内容发布到相册或任何其他类型的帖子中。例如以下是不允许的:

                  $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,
                      )
                    );
      

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多