Facebook android shareDialog在开幕后关闭

时间:2015-05-10 15:44:21

标签: java android facebook facebook-android-sdk

关注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会弹出并突然自动关闭。

6 个答案:

答案 0 :(得分:28)

您需要制作应用程序&#34; Public&#34;。

转到&#34;状态和评论&#34;您的应用设置中的部分,并打开选项&#34;您是否希望将此应用及其所有实时功能提供给公众?&#34;

答案 1 :(得分:4)

您需要在show()方法上指定Mode。在FEED之间,
NATIVE,WEB和AUTOMATIC 最方便的是最后一个(AUTOMATIC),因为它直接从Facebook应用程序收集数据,因此您不必登录,但有时它会意外关闭.. 一般来说,这就是我的事情:

  • FFED:1)通过谷歌浏览器工作,2)旧设计3)需要登录
  • NATIVE:1)使用facebook应用程序的帖子,无需额外登录
  • WEB:类似于FEED但具有不同的UI
  • AUTOMATIC :(有时在启动时立即关闭..)1)仅使用facebook app 2)无需重新登录3)分享任何其他分享 在这里看一看:https://developers.facebook.com/docs/reference/android/current/class/ShareDialog.Mode/ 所以我建议使用WEB,因为它始终有效:

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

答案 2 :(得分:2)

问题在于我正在测试应用程序的手机,因为看起来你必须使用Facebook帐户登录到Facebook应用程序,该帐户被标记为您的应用程序注册的开发人员,然后它将按预期工作以及我假设以后使用发布ssh密钥时,它可以在任何具有任何帐户的设备上使用。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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

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

  3. 网址无效:og:url。该网址以www开头,其中正确的方式为httphttps,后跟www

  4. 希望这有助于某人。

答案 5 :(得分:0)

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