我无法在不使用共享对话框的情况下将我的自定义故事直接发布到此人的墙上,并且无法找到有关如何在新 SDK 中执行此类操作的示例或适当文档(大部分文档Facebook 网站上的 Graph API 似乎已过时...)此人此时已登录 Facebook,已授予该应用发布的权限,并单击了一个按钮以分享他们使用该应用的故事进行社交 Activity 。
目前,我的代码设法创建并执行一个包含有关对象和操作的信息的 GraphRequest
,它会毫无错误地返回到它的回调,并给出一个返回码为 200 的响应(好的),其中有一个“id”号,我认为这表示帖子成功,但故事并没有上墙。
当我转到 Facebook 开发者网站并在对象浏览器中查找我的应用程序时,我还看到我在请求中发送的对象已创建...我在请求中发送的所有详细信息都显示在那里正确...我确定我将请求发布到正确的图形路径以执行我的操作,我的 AccessToken
有效,该应用程序具有适当的 publish_actions
权限,我'我很确定我给了操作期望的参数,(至少,对象参数似乎是有效的并且使用正确的名称作为它的键,因为对象已发布并且我没有得到关于缺少 my_object
参数...)
这是我的代码( namespace 、对象和操作名称已更改,但对手头的问题应该没有影响):
// Create object
JSONObject myObject=new JSONObject();
try {
myObject.put("og:type", "my_namespace:my_object");
myObject.put("og:title", facebookStoryTitle);
myObject.put("og:description", facebookStoryDescription);
myObject.put("place:location:latitude", facebookPlaceLat);
myObject.put("place:location:longitude", facebookPlaceLon);
} catch (JSONException e) {
String toastText = "JSON Error: " + e.getMessage();
Toast.makeText(getApplicationContext(), toastText,
Toast.LENGTH_SHORT).show();
return;
}
// Create action
Bundle params = new Bundle();
params.putInt("expires_in", facebookStoryExpires);
params.putString("my_object", myObject.toString());
// Create request
GraphRequest request = new GraphRequest(AccessToken.getCurrentAccessToken(),
"me/my_namespace:my_action", params, HttpMethod.POST,
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
FacebookRequestError error = response.getError();
if (error != null) {
// Display User Error Message
String toastText = error.getErrorUserMessage();
Toast.makeText(getApplicationContext(), toastText,
Toast.LENGTH_LONG).show();
return;
} else {
// DEBUG: Display Response
String toastText = response.toString();
Toast.makeText(getApplicationContext(), toastText,
Toast.LENGTH_LONG).show();
return;
}
}
});
// Send Request
request.executeAsync();
最佳答案
你必须付出
params.putString("fb:explicitly_shared", true);
在时间线中显示帖子。
关于android - 如何在 Android SDK 4.0 中将自定义故事直接发布到用户的 Facebook 墙上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29785801/