5

在我對這個主題所做的所有研究中,90%已經過時,這使我相信最近有一些變化Facebook JS SDK關於明確共享Open Graph故事。我有以下代碼:通過FB.ui Share對話框爲顯式共享的開放圖故事動態生成描述

function postToFB(desc){ 
FB.ui({ 
    method: 'share_open_graph', 
    action_type: 'mynamespace:myaction', 
    action_properties: JSON.stringify({ 
     myobject: "myobjectid" 
    }) 
}, function(response){}); 
} 

這裏的問題是,它會嘗試與只有我在我的應用程序設置了Facebook的Open Graph部分設置的設置共享爲MyObject。我想使用同一個對象,但每次共享時都要使用動態「desc」變量來更改描述。有誰知道如何做到這一點?我可以在我的應用程序設置的Facebook Open Graph部分中靜態設置Caption,但我需要每次分享它時動態設置它。

我已經通過Facebook JS SDK搜索了可以添加到action_properties的其他鍵/值對,但是SDK信息在這方面非常有限。

UPDATE

我已經修改了代碼,包括2個電話,一個創建對象,第二次發佈的新對象的信息的故事。下面的代碼:

function postToFB(desc){ 
FB.api(
    'me/objects/mynamespace:myobject', 
    'post', 
    { 
    object: { 
     "app_id": myappid, 
     "type": "mynamespace:myobject", 
     "url": "myurl", 
     "title": "mytitle", 
     "image": "myimgurl", 
     "description": desc 
     } 
    }, 
    function(response) { 
     console.log(response); 
     FB.ui({ 
      method: 'share_open_graph', 
      action_type: 'mynamespace:myaction', 
      action_properties: JSON.stringify({ 
       myobject: response.id 
     }) 
    }, function(r){}); 
}); 
} 

然而,根據對這一問題的意見:Facebook object API - duplicate objects created Facebook的工作人員表示這種做法不會被Facebook被批准,因爲一個動作由用戶不能產生兩個職位,此代碼現在確實。其中一個將對象發佈到Facebook用戶的活動日誌中,然後將其發佈到活動日誌和新聞源。

如果我只能打一個電話,並且規定FB.ui函數本身的myobject描述應該是什麼,那就太好了。有誰知道如何做到這一點?

回答

5

我想通了。我遇到的主要問題是當我發佈到應用程序/對象(這將創建對象但不發佈事件)時,我正在發佈給我/對象(這會將事件發佈到用戶的活動日誌)。由於發佈到應用程序/任何需要一個訪問令牌,我不得不改變初始調用發生在服務器端的PHP:

$request = new FacebookRequest( 
null, 
'POST', 
'/app/objects/mynamespace:myobject', 
array(
     'access_token' => 'myaccesstoken', 
    'object' => json_encode(array(
     'app_id' => myappid, 
      'url' => 'myurl', 
      'title' => 'mytitle', 
      'image' => 'myimg', 
      'description' => 'mydesc' 
     )) 
) 
); 
$response = $request->execute(); 
$obj = $response->getGraphObject(); 
echo $obj->getProperty('id'); 

從那裏我可以用JS腳本發佈對象的新ID到用戶的Feed。

希望能阻止你花費2個半天的時間嘗試像你一樣自己想出來。

相關問題