Android facebook SDK - 无法为facebook sharebutton

时间:2015-11-20 01:47:30

标签: android facebook

我想在Android应用中创建一个FB分享按钮。我的最小sdk是16。

在我的gradle文件中,我有以下依赖项:

compile 'com.facebook.android:facebook-android-sdk:4.7.0'

问题是当我在facebook分享按钮上设置onClicklistener时没有响应(我甚至使用断点来确保)。它从不击中回调,按钮显示为灰色。以下是此应用在facebook上的设置:

enter image description here

请注意,我在使用DEBUG KEY HASH。所以我所做的一切都不是在发布中,而是在调试签名中。

在android清单中,我在应用程序标记内定义了以下内容:

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


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

为了初始化facebook sdk,我有自己的应用程序子类(记录在清单应用程序标签中),它工作正常&amp;我的断点得到它:

public class MyApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();

    FacebookSdk.sdkInitialize(this);
}

}

应用程序构建并运行正常,除了facebook按钮。在布局文件中,我声明了这样的facebook分享按钮:

<com.facebook.share.widget.ShareButton
    android:id="@+id/fb_share_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="15dp"
    android:contentDescription="@string/share_fb"
    />

然后在我的活动类中,我通过以下方式在onCreate中获得对此视图的引用:

mShareButton = (ShareButton)findViewById(R.id.fb_share_button);
mShareButton.setOnClickListener(this);

并且我的活动实现了onClickListener,其中的所有内容都是一个日志语句,它永远不会被打印,并且断点不会在那里。我还需要做些什么?我正在运行一个lolipop设备,我登录了手机上的Facebook应用程序。我不知道这是否需要,但我也在我的活动oncreate方法中创建了callbackManager,如下所示:

mCallbackManager = CallbackManager.Factory.create();

并使用以下命令成功创建了调试哈希:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

我的最终目标是,当用户点击facebookshare按钮时,我将运行以下代码与Facebook分享内容:

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();

            mShareDialog.show(linkContent);

1 个答案:

答案 0 :(得分:2)

经过一天的挫折之后,我发现了这个问题。

在android清单中我已经将FB应用程序ID直接定义为字符串。我试图快速测试它,所以我只使用了一个原始的字符串,如&#34; 12345667&#34;作为元数据中的值。相反,您必须使用下面的字符串值,问题已解决。

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

注意:您不需要为共享按钮设置onclicklistener。刚刚发送了这样的内容:

ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("https://developers.facebook.com"))
            .build();

    mShareButton.setShareContent(content);