Facebook android shareDialog 打开后关闭

Facebook android shareDialog closes after opening

THIS 之后,我在我的 android 应用程序中使用了 facebook sdk,为了测试,我在我的 MainActivity 中添加了以下代码:

CallbackManager callbackManager;
ShareDialog shareDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);

    callbackManager = CallbackManager.Factory.create();
    shareDialog = new ShareDialog(this);

    if (ShareDialog.canShow(ShareLinkContent.class)) {
        ShareLinkContent linkContent = new ShareLinkContent.Builder()
                .setContentTitle("Hello Facebook")
                .setContentDescription(
                        "The 'Hello Facebook' sample  showcases simple Facebook integration")
                .setContentUrl(Uri.parse("http://developers.facebook.com/android"))
                .build();

        shareDialog.show(linkContent);
    }
}

并且我在清单中添加了以下步骤:

<uses-permission android:name="android.permission.INTERNET"/>

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

<provider android:authorities="com.facebook.app.FacebookContentProvider950310748347640"
  android:name="com.facebook.FacebookContentProvider"
  android:exported="true" />

<activity android:name="com.facebook.FacebookActivity"
  android:configChanges=
             "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:label="@string/app_name" />

当我测试时,shareDialog 弹出并突然自行关闭。

问题出在 phone 我正在测试该应用程序,因为您似乎必须使用标记为您的应用程序在其下注册的开发人员的 Facebook 帐户登录到 Facebook 应用程序,然后它会按预期工作,我假设以后在您使用发布 ssh 密钥时使用它会在任何设备上使用任何帐户。

您需要制作您的应用程序 "Public"。

转到应用设置中的 "Status and Review" 部分,然后打开选项 "Do you want to make this app and all its live features available to the general public?"

您需要在 show() 方法上指定模式。在 FEED 之间,
本地、网络和自动 最方便的是最后一个(自动),因为它直接从 Facebook 应用程序收集数据,因此您无需登录,但有时它会意外关闭。 通常这是我的事情:

  • FFED:1) 通过 Google Chrome 工作,2) 旧设计 3) 需要登录
  • 原生:1)使用 facebook 应用发帖,无需额外登录
  • WEB:与 FEED 类似,但有不同 UI
  • 自动:(有时在启动时它会立即关闭..)1)仅使用 facebook 应用程序 2)无需重新登录 3)像任何其他共享一样共享 在这里仔细看看:https://developers.facebook.com/docs/reference/android/current/class/ShareDialog.Mode/ 所以我建议 WEB,因为它总是有效:

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

我的情况不同。我遇到这个问题有 3 个原因:

  1. App FB App Id 无效(有两个 facebook 应用程序,我不小心设置了错误的应用程序 ID)。

  2. 图像 URL 无效/有自签名证书问题:og:image。我从 https 更改为 http 并且有效。

  3. Web Url 无效:og:url。 url 以 www 开头,正确的方法是 httphttps 后跟 www

希望这对某人有所帮助。

当您使用为其他应用创建的测试用户登录 Facebook 时,可能会发生这种情况。

这是因为该应用未上线且无法供 public 使用。为此,您首先需要有隐私政策 link。 Facebook 最近更新了他们的政策,要求几乎每个应用程序都在仪表板中设置他们的隐私政策 link。您可以使用 https://www.iubenda.com/privacy-policy-generator 免费生成一个。希望对您有所帮助!