我想在Android应用中创建一个FB分享按钮。我的最小sdk是16。
在我的gradle文件中,我有以下依赖项:
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
问题是当我在facebook分享按钮上设置onClicklistener时没有响应(我甚至使用断点来确保)。它从不击中回调,按钮显示为灰色。以下是此应用在facebook上的设置:
请注意,我在使用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);
答案 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);