2012-10-02 43 views
2

更新代碼:獲得批准的開放式圖表操作 - 將publish_stream更改爲publish_action

我有一個未決批准的開放圖形操作。我收到一個信息,從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'});  
     } 
     



      
      
      

我不知道這是如何配置爲發佈流的故事,而不是一個開放的曲線圖的故事嗎?任何人都可以幫助解決這個問題,它讓我瘋狂,找不到任何東西來表明我在做什麼不是發佈行動。

如果,然而,當他們正在審查我的行爲,他們在我的生活的應用程序查看代碼那麼當然它不是設置爲觸發任何打開圖的故事 - 因爲他們沒有被批准呢!

任何幫助將非常感激。

非常感謝

回答

1

你的問題是不完全清楚,但無論是publish_actionspublish_streamPermissions都允許您發佈的Open Graph的行動。然而,publish_stream權限涵蓋了許多其他發佈類型,也是可選的,如果用戶刪除該權限,則無法爲這些用戶發佈OG操作。

更新您的驗證碼要求publish_actions不是/以及

+0

感謝IGY。我已經在我的代碼中有這樣的代碼:[code] function loginUser(){FB0} } [code]我是否需要在其他地方添加它?謝謝 –

+0

如果這是用戶登錄應用程序的唯一方式,那麼應該是你需要的所有 – Igy

+0

再次感謝Igy。我也這麼想。你知道他們是否正在查看我用來測試該操作的測試頁嗎?或者你認爲他們可能是指我的應用中的頁面 - 至今還沒有使用新的動作,所以不要引用publish_action。我希望當他們告訴你某些事情需要改變時他們會更具體。 –

0

終於得到了它的工作。步驟:1。 添加「Publish_action」權限 2. FB圖形API瀏覽器測試成功 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); 
      } 
     }); 
+0

最後我得到了它的工作..... :) 步驟:1.添加「Publish_action」權限 2.在FB Graph API Explorer上成功測試 3.修改我的Javascript(與上面的postShare()方法類似的代碼)...它的工作.. FB.api('/ me/namespace:purchase', 'post', {product:'http://samples.ogp.me/367683346642550'}, function(響應){ 如果(!response || response.error){ alert('Error occured'+ response.error); } else { alert('Post was successful!Action ID:'+ response.id); } }); –

+0

嗨Vivek。你的行動得到了批准嗎?我已經將它工作併發布到時間線上,但Facebook說我正在使用發佈流。你有沒有改變代碼中的任何東西? –

0

Facebook的測試人員需要實際的代碼運行在您的生產服務器上。他們將使用Facebook測試用戶執行您在提交操作時描述的所有步驟。他們不會使用已發佈的故事。他們可能會使用「Open Graph Test User」。

你這裏有兩種選擇:

  1. 嘗試發佈與每個用戶的行爲,如果它不工作,發佈該流(以便測試用戶獲得行動發表,但真實用戶發佈使用舊代碼)

    --- OR ---

  2. 確定用戶是否是一個測試用戶(通過記錄測試用戶的ID),並擔任他的新代碼。

無論如何,真正的操作流程必須在生產服務器上可執行。

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, 
       ) 
      ); 
相關問題