2015-04-06 30 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(...)使用了哪些类型? –