3

我試圖在Android上創建一個使用Facebook SDK /應用程序中的Native Share對話框的基本演示。然而,當我嘗試用動作「og.likes」創建一個故事並使用我的自定義對象時,它被Facebook創建爲基本的「對象」類型,而不是我定義的自定義類型。所以不是說「Johnny喜歡一個git倉庫」,而是說它「Johnny喜歡一個物體」。Facebook Open Graph - 標準動作og.likes與自定義對象類型

這裏是我使用的代碼:

public void shareOpenGraphStory(Intent intent) { 
    OpenGraphObject obj = OpenGraphObject.Factory.createForPost("qtino-sharing:git_repo"); 
    obj.setType("qtino-sharing:git_repo"); 
    obj.setTitle("Testing OpenGraph Share"); 
    Log.w("FBShareActivity", "Object type is " + obj.getType()); 

    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 
    action.setType("og.likes"); 
    action.setProperty("object", obj); 

    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(mainActivity, action, "og.likes", "object") 
      .setFragment(this) 
      .build(); 
    uiHelper.trackPendingDialogCall(shareDialog.present()); 
} 

我敢肯定,我在正確的Facebook開發中心定義我的自定義對象的類型,我可以使用這種類型的成功分享的Open Graph的故事我還定義了一個自定義操作。

這個對象的類型被正確設置,如獲得打印的日誌語句所證實的那樣,以及沒有錯誤的開放圖故事帖子(我可以在我的臉譜牆上看到它)。然而,在對象瀏覽器中,對象的og:類型顯示「object」而不是「git_repo」,並且經過幾個小時的文檔和淘洗後,我仍然無法弄清楚原因。

任何人都可以看到我做錯了什麼嗎?或者,您是否知道在通過本機共享對話框共享時,甚至可以將派生對象類型與'og.likes'操作類型一起使用。

+0

+1,這已經真正困擾我。任何人都有答案? – Matt 2014-10-09 07:03:24

回答

1

我有同樣的問題,我無法用通用動作「og.likes」修復它。我最終創建了一個自定義操作(在我的案例中爲「建議」),添加了一個對象類型(在我的情況下爲「Product」),並將該類型添加爲我的自定義操作的屬性。

然後,我可以創建一個新故事(「推薦產品」),並將該故事發布到我的供稿中,並帶有正確的標題(產品名稱)。

這是一個更多的工作,尤其是因爲我需要找到一個好的動作名稱來取代「og.likes」,但我仍然覺得它更適合,然後讓它說「喜歡一個對象」。

例子:

OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 

action.setType("<my_app_namespace>.<my_custom_action>"); 
action.setProperty("<my_custom_action_property_name>", obj);