发布ID Facebook的共享对话框始终在Android中返回null

我使用testing应用程序ID和logintesting用户创build在Facebook开发网站上的dash_board应用程序,需要pulish_actions当login使用loginbutton部件的Facebook SDK,但结果获取postid总是= null的权限。 这是我的代码:

.... shareDialog = new ShareDialog(MainActivity.this); shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { @Override public void onSuccess(Sharer.Result result) { if (result.getPostId() != null) Log.e(TAG, result.getPostId()); } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }); pulishButton.setOnClickListener(this); try{ loginButton.setPublishPermissions(new String[]{"publish_actions","publish_stream"}); }catch (FacebookException e){ e.printStackTrace(); } loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Log.e(TAG, "success"); loginButton.setEnabled(false); pulishButton.setEnabled(true); GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject json, GraphResponse response) { if (response.getError() != null) { // handle error System.out.println("ERROR"); } else { System.out.println("Success"); } catch (JSONException e) { e.printStackTrace(); } } } }).executeAsync(); } @Override public void onCancel() { Log.e(TAG, "On cancel"); } @Override public void onError(FacebookException e) { Log.d(TAG, e.toString()); } }); 

Solutions Collecting From Web of "发布ID Facebook的共享对话框始终在Android中返回null"

解决scheme是强制ShareDialog使用Feed模式,并避免使用FB的应用程序共享:

 shareDialog.show(linkContent, ShareDialog.Mode.FEED); 

我相信这是FB的一个bug。 当使用FB App进行共享(postId = null)时,他们不会将postId发送到onSuccesscallback,但是如果您使用Feed,则会执行callback。

我听说你可以通过使用Facebooklogin并要求“publish_actions”权限来避免“postId = null”的问题。 但我不认为这是解决这个问题的正确方法。 关于上述许可Facebook的状态:

通过对话框或社交插件发布不需要此权限。 如果您只使用“共享”对话框,Feed对话框,消息对话框或社交插件(例如“Like”button),请勿请求查看此权限。

共享对话框上的Facebook文档:

这不需要Facebooklogin或任何扩展的权限,所以这是在网上启用共享的最简单的方法。

您无法直接使用“publish_action”login,您必须首先使用任何读取权限login,然后请求发布权限https://developers.facebook.com/docs/facebook-login/permissions/v2.4#publishing