2015-04-06 55 views
0

繼此tutorial後,我試圖在Android應用程序中使用Facebook SDK 4.0實現OpenGraph故事。
我已經閱讀了很多Facebook文檔,並理解(理論上)OpenGraph故事應該如何工作。但是主要的問題是,我無法在SDK 4.0中實現它,因爲教程和文檔中的所有代碼示例都被引用到舊SDK的方法中。我所有的努力使其工作(改變行動,對象)失敗。Facebook OpenGraph Android的Facebook SDK 4.0中的故事

這裏是我的代碼(根據documentation ):

// Create an object 
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder() 
     .putString("og:type", "books.book") 
     .putString("og:title", "A Game of Thrones") 
     .putString("og:description", "In the frozen wastes to the north of Winterfell, sinister and supernatural forces are mustering.") 
     .putString("books:isbn", "0-553-57340-3") 
     .build(); 

// Create an action 
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() 
     .setActionType("books.reads") 
     .putObject("books:book", object) 
     .build(); 

// Create the content 
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder() 
     .setPreviewPropertyName("books:book") 
     .setAction(action) 
     .build(); 

ShareButton shareButton = (ShareButton)findViewById(R.id.shareButton); 
shareButton.setShareContent(content); 
shareButton.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 

    @Override 
    public void onSuccess(Result result) { 
     Log.i(TAG, "SHARING SUCCESS!"); 
    } 

    @Override 
    public void onError(FacebookException error) { 
     Log.e(TAG, "SHARING ERROR! - " + error.getMessage()); 
    } 

    @Override 
    public void onCancel() { 
     Log.w(TAG, "SHARING CANCEL!"); 
    } 
}); 

什麼我得到(用我所有的嘗試): enter image description here

行動至少需要一個參考:您嘗試 發佈的操作無效,因爲它沒有指定任何參考對象。 至少必須指定以下屬性之一:book。

請,你能解釋一下,如何使用SDK 4.0的方法來糾正FB SDK 4.0使用OpenGraph,並正確使用ObjectsActions

回答

2

修復了對話框的webview版本存在一個錯誤。您需要對您的代碼進行一個小的更改,我也會更新我們的文檔:

// Create an action 
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() 
    .setActionType("books.reads") 
    .putObject("book", object) // <--- don't namespace the object on the action 
    .build(); 

// Create the content 
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder() 
    .setPreviewPropertyName("book") // <--- don't namespace the preview property 
    .setAction(action) 
    .build(); 
+0

謝謝,它的工作原理應該如此。請同時更新此[頁面](https://developers.facebook.com/docs/sharing/android#open_graph)。 – VadymVL

+0

但現在有混淆,你應該在哪裏使用命名空間,哪裏不是。 我正在嘗試在練習冊報價上實施。 'ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() .setActionType(「books.quotes」) .putString(「body」,「To be,or not to be ...」) .putObject(「book」,對象) .build();'我應該只使用「body」還是「quotes:body」或「books:quotes:body」?有了這段代碼,我可以成功地分享這本書,但報價並未附上。 – VadymVL

+0

@Ming Li「book」旁邊的setPreviewPropertyName(...)使用了哪些類型? –