android - 如何在 Android SDK 4.0 中将自定义故事直接发布到用户的 Facebook 墙上?

标签 android facebook facebook-graph-api

我无法在不使用共享对话框的情况下将我的自定义故事直接发布到此人的墙上,并且无法找到有关如何在新 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/

相关文章:

java - Android 致命异常空指针

android - 当应用程序对象被系统杀死时清除返回堆栈

facebook - 在一次 API 调用中查询多个洞察指标

ruby-on-rails - NoMethodError,未定义方法 `bytesize' 用于带有 devise 和omniauth-facebook 的哈希

android - 无法将项目添加到自定义数组适配器

java - 在共享首选项中设置默认值

objective-c - 我可以使用 [FBDialogs presentOSIntegratedShareDialogModallyFrom] 通过 SDK 3.5 将图像发布到 facebook 吗?

iphone - 如何通过 ShareKit 在 facebook 上发布带图片的 URL

facebook - Graph Search API order by like fql

javascript - 从 Flash 调用时,facebook javascript sdk 登录对话框被阻止