Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将自定义故事直接发布给用户';Android SDK 4.0中的Facebook墙?_Android_Facebook_Facebook Graph Api - Fatal编程技术网

如何将自定义故事直接发布给用户';Android SDK 4.0中的Facebook墙?

如何将自定义故事直接发布给用户';Android SDK 4.0中的Facebook墙?,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我无法在不使用共享对话框的情况下将我的自定义故事直接发布到用户的墙上,并且无法找到关于如何在新SDK中执行类似操作的示例或适当文档(Facebook网站上Graph API上的许多文档似乎已过时……)此人此时已登录Facebook,已授予应用程序发布权限,并单击按钮分享他们使用应用程序执行社交活动的故事 目前,我的代码设法创建并执行一个GraphRequest,其中包含有关对象和操作的信息,它返回到它的回调,没有错误,并给出一个返回代码为200(OK)的响应,其中包含一个“id”号,我认为这表示

我无法在不使用共享对话框的情况下将我的自定义故事直接发布到用户的墙上,并且无法找到关于如何在新SDK中执行类似操作的示例或适当文档(Facebook网站上Graph API上的许多文档似乎已过时……)此人此时已登录Facebook,已授予应用程序发布权限,并单击按钮分享他们使用应用程序执行社交活动的故事

目前,我的代码设法创建并执行一个
GraphRequest
,其中包含有关对象和操作的信息,它返回到它的回调,没有错误,并给出一个返回代码为200(OK)的响应,其中包含一个“id”号,我认为这表示发布成功,但这个故事并没有被曝光

我还看到,我在请求中发送的对象是在我访问Facebook开发者网站并在对象浏览器中查找我的应用程序时创建的。。。我在请求中发送的所有详细信息都正确显示在那里。。。我确信我已将请求发布到我的操作的正确图形路径,我的
AccessToken
有效,应用程序具有适当的
publish\u actions
权限,我确信我已给出了操作所需的参数,(至少,object参数似乎是有效的,并且使用了正确的名称作为其键,因为该对象已发布,并且我没有得到关于缺少
my_object
参数的错误信息…)

这是我的代码(名称空间、对象和操作名称已更改,但这对当前的问题没有影响):

你必须付出
params.putString(“fb:explicit_shared”,true);

在时间线中显示帖子。

如果你收到200条回复,这意味着帖子创建成功,但这并不意味着它必须显示在时间线中。Facebook用户可以更改他们的隐私设置,你可以启用该选项来查看进入你的时间线的所有帖子,直到你批准它们,它们才会显示。The post将显示在用户的活动日志部分,但不会显示在时间轴上。这只是一个例子,用户可以启用不同的隐私设置,以避免您寻找的行为。是的,但我发布到的用户是我自己,我已授予该应用程序公开发布的完全权限,我从Facebook Lo批准了它gin当它请求publish_actions权限时…我没有在任何审阅队列中看到帖子或类似的内容…它具有正确的访问令牌(我登录时的访问令牌,而不是应用程序访问令牌),并在我的帐户上设置应用程序设置,以便此应用程序中的帖子是公开的…此外,当我使用打开共享对话框的文档中的简化代码时,它发布的很好,每个人都可以看到。关于
fb:explicit\u shared
。我如何向Facebook申请该权限?我只是找不到它我的应用程序位于facebook开发者仪表板上。
// 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();