我正在使用Facebook SDK 4.0,我想使用OpenGraph API在用户墙上发布。
我已将Action定义为:
对象为
现在,当我在Facebook开发者控制台中点击获取代码并切换到Android时,我得到以下代码段:
Request request = new Request(
Session.getActiveSession(),
"me/objects/friendsampleapp:milestone",
params,
HttpMethod.POST
);
Response response = request.executeAndWait();
在这里,我无法获得导入响应,请求和会话的选项。
我可以选择导入com.facebook.login.LoginClient.Request;
但是有一条红色的波浪线,在悬停时说:The type com.facebook.login.LoginClient is not visible
。
值得注意的是,在同一活动中,我的登录工作正常,因此这不是导入Facebook库的问题。
在Changelog Facebook中提到:
删除了会话 - AccessToken,LoginManager和CallbackManager 类取代并替换Session类中的功能。
我想知道Facebook是否希望我梦想如何将API与我的代码进行交互,当它全部崩溃时,以这个速度发布SDK,对任何人都没有帮助。
我还试图用Facebook记录一个错误报告但是对于facebook而言似乎也是如此!
深入挖掘我已将上述代码更改为:
Bundle params = new Bundle();
GraphRequest request = new GraphRequest(AccessToken.getCurrentAccessToken(),"me/objects/friendsampleapp:milestone",params, HttpMethod.POST);
GraphResponse response = request.executeAndWait();
Bundle params1 = new Bundle();
params1.putString("milestone", "http://samples.ogp.me/812890225461181");
GraphRequest request1 = new GraphRequest(
AccessToken.getCurrentAccessToken(),"me/friendsampleapp:celebrating",params,HttpMethod.POST);
GraphResponse response1 = request.executeAndWait();
但是我很困惑,下一步是什么?
答案 0 :(得分:1)
这是我提出的最后一件事,显然,它确实有效:
ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
.putString("og:type", "friendsampleapp:milestone")
.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.")
.build();
// Create an action
ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
.setActionType("friendsampleapp:celebrating")
.putObject("milestone", object)
.build();
// Create the content
ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
.setPreviewPropertyName("milestone")
.setAction(action)
.build();
ShareDialog.show(getActivity(), content);
答案 1 :(得分:0)
因为facebook文件很糟糕。在升级指南中,他们展示了如何提出请求
GraphRequest request = GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
if (user != null) {
profilePictureView.setProfileId(user.optString("id"));
}
}
}).executeAsync();