使用Android Studio集成FacebookSDK之Facebook分享功能添加

原创 2016年05月30日 10:25:36

为了补先前童鞋接ShareSDK留下的坑,决定先接一下原生的FacebookSDK,体验一下。
这次主要介绍一下

  1. Facebook后台配置应用。
  2. Android Studio接入FB SDK配置
  3. FB分享功能

开发环境:Windows10系统 64位
开发工具:Android Studio 1.5.1
其他诸如JDK,Android SDK以及环境变量统统配置好。
测试需要:vpn 是必须哒。登录FB,使用AS下载依赖,手机测试分享都需要这个。

以下Android Studio简称AS,Facebook 简称 FB。

在FB开发者页面针对不同平台都有详细的入门教程,Android的参考下面的网址,还是比较简单,可以自行去开发者页面看接入教程。
https://developers.facebook.com/quickstarts/?platform=android

这里只简单写下步骤,以防某天不能翻墙了就看不到了。

引入SDK 配置 build.gradle
使用AS开发的话,就不必再单独下载FB SDK了,因为在build.gradle配置好依赖后,AS会自动下载好。

  1. 在AS里创建工程的时候,选择”API 15:Android 4.0.3“或者更高的API。
  2. 编写Project的build.gradle。打开your_app | Gradle Scripts | build.gradle,在build.gradle 中的dependencies前面的repositories写上
repositories{
    mavenCentral()
}

3.编写Module的build.gradle
build.gradle中的 dependencies里加上这句话
compile ‘com.facebook.android:facebook-android-sdk:[4,5)’
最后 Build 下 Project(Make Project或者Make Module),Build 成功后,就会把依赖的FB SDK下载好。
如果Build失败,可能是电脑上的vpn不能通过Maven下载依赖,也可能是你的Google Repository需要更新了,具体可以看下AS的输出错误信息,如果是后者则可以先使用Android SDK Manager更新下Google Repository。

代码编写

  1. 在你的Activity里引入FacebookSdk
import com.facebook.FacebookSdk;

2.打开你工程里的strings.xml文件,位置在/app/src/main/res/values/strings.xml.。添加一个名字为facebook_app_id的新字段,值就是你后台得到的Facebook App ID:

<string name="facebook_app_id">1754320301505036</string>

3.打开你的AndroidManifest.xml文件添加一个 uses-permission。就是一个可以联网的权限。

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

4.还是在AndroidManifest.xml中,在 application元素下添加一个meta-data元素。

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

后台配置
在工程里的相关信息写好后,接下来继续去FB配置些东西,在Tell us about your Android project 部分,写上你工程的包名,以及带包名的MainActivity名字。
这里写图片描述

Key Hashes
写好包名,点击Next后,会有个弹窗提示你说这个包名在市场上找不到,不管它这个提示,选择继续使用这个包名,然后就来到了一个重要部分 Key Hashes
这里写图片描述

Add your development and release key hashes部分有介绍如何生成Development key hash可以是debug key hash或者Release key hash。分别对应的命令是

———-Development———
Mac

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

Windows

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

———-Release———

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

是通过keytool 和 openssl 共同生成的。keytool是JDK里的一个工具,装了JDK并配置好环境变量的就可以使用这个 keytool 命令,但是难点在于这个 openssl 命令,需要单独安装 openssl,并且安装配置还挺麻烦。具体可以参考这篇文章,写的还是不错的,不仅有详细的步骤,还有出现的错误处理。

如何安装 openssl 以及配置
p.s.
1.我电脑上是装的VS,然后使用VS安装目录下的VC目录中的vcvars32.bat也是可以的。
2.最后安装成功后,其实在 openssl 目录下没有生成 Bin,lib文件夹,只有一个include 还是空的。
openssl.exe(openssl指令程序)、ssleay32.dll(ssl协议动态库)、libeay32.dll(密码算法库)
这三个文件都在 out32dll 目录下。

配置好 openssl 后就可以愉快的生成 key hashs 了,如果实在搞不定 openssl,这里还有一个简单的方法获取 key hashs。

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

在你的代码里加入以上代码也可以愉快的获取 key hashs,使用debug keystore 签名的包,获取的就是 development key hashs,使用你正式签名 keystore签名的包,获取的就是 release key hashs。生成APK后在手机上运行一下,看下log就可以获取key hashs了。

分享代码

public class MainActivity extends FragmentActivity {
    CallbackManager callbackManager;
    ShareDialog shareDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        shareDialog = new ShareDialog(this);
        // this part is optional
        shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });
    }
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);
}

可以使用 FB SDK提供的 ShareDialog 弹出一个分享对话框,来完成分享。在后台应用审核功能栏里,可以设置应用的开发状态。如果只是单纯测试分享功能的话,就可以保持应用为测试状态,使用你的开发者账号来进行分享,如果是正式发布的话就可以设置为公开状态。

额外内容

  1. 如果将上面代码的 Url 地址换成你的应用在 Google Play 上的地址,例如
setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=你应用的包名"))

成功分享后,在FB页面就会显示你应用的宣传图,以及推荐去 google play下载的提示文字,如下:
这里写图片描述

2.接入shareSDK相关。
shareSDK是别人接入的,我只是后来做了些修改。然后附加给三个网址,一个是接入 shareSDK的文档,一个ShareSDK各社交平台申请APPkey 的网址及申请流程汇总,一个是接入 shareSDK遇见的问题汇总。

接入 shareSDK官方文档

ShareSDK各社交平台申请APPkey 的网址及申请流程汇总

shareSDK遇见的问题汇总

版权声明:本文为博主原创文章,转载请标明出处 ^M^。

Android实现Facebook第三方分享

最近项目需要集成Facebook的分享功能,在网上看了一些实现例子,用的方法感觉比较老了。Facebook最新的Api已经换了很多。下面我就将最新的集成方式分享给大家。 facebook官方提供的集成...
  • u013718120
  • u013718120
  • 2016年08月03日 14:47
  • 4880

Android关于分享到Facebook

接入Facebook SDK的一些坑
  • tianshuai4317618
  • tianshuai4317618
  • 2017年08月18日 14:48
  • 372

TBS腾讯浏览服务的SDK接入-Android studio

X5web TBS腾讯浏览服务的SDK接入-Android studio我的博客TBS官网 普通接入参考项目中的 App、BrowserActivity、X5WebView 等类中相关实现。...
  • wenmang_star
  • wenmang_star
  • 2017年06月08日 11:25
  • 2061

Unity5.x+Android Studio 讯飞SDK的接入

网上大多是unity5.0以下和eclipse的教学。走了不少弯路。现在特地将在AndroidStudio和Unity5.x环境下讯飞SDK接入方法分享一下。...
  • weixin_36303734
  • weixin_36303734
  • 2017年02月06日 23:02
  • 2048

Android Studio集成Facebook SDK

前言上篇文章说明了AS如何导入运行Facebook SDK Sample http://blog.csdn.net/shrimpcolo/article/details/49150829这篇继续说明...
  • shrimpcolo
  • shrimpcolo
  • 2015年10月15日 17:01
  • 1290

sharesdk安卓版中facebook通过审核的步骤

前半段说明测试者账号分享的过程,测试者账号可以在不用审核的情况下完成分享: 1,登陆https://developers.facebook.com创建一个新应用 2,设置好Redirect...
  • xiaoheiyohehe
  • xiaoheiyohehe
  • 2015年07月25日 18:57
  • 1615

Android 基于ShareSDK的Facebook第三方登录

ShareSDK中Facebook的登录与其他方式的登录方法一样。 1、在国内开发的话首先当然需要翻墙,翻墙软件很多,可以在网上搜一下,当然付费的较稳定些。 2、登录Facebook开放平台https...
  • Fish20100903
  • Fish20100903
  • 2015年09月07日 12:26
  • 1212

FacebookSDK接入的那些坑

1,使用aar代替jar,对Android Studio熟悉的同学建议直接看第4步 1)首先需要开发工具使用Android studio而不是Eclipse; 一个Android studio M...
  • codehxy
  • codehxy
  • 2016年07月22日 15:56
  • 8213

手游接入Facebook的那些坑

之前工作需要在手游中接入了facebook,并以此写了《手游接入Facebook功能》的博文。当时facebook sdk的版本还是3.x,代码集成度比较低,集成起来也比较麻烦。文中只是稍微提了下功能...
  • Piao_Polar
  • Piao_Polar
  • 2015年07月03日 15:13
  • 13537

分享链接内容到Facebook和twitter

分享链接内容到Facebook和twitter
  • u013673976
  • u013673976
  • 2014年10月13日 17:54
  • 4444
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Android Studio集成FacebookSDK之Facebook分享功能添加
举报原因:
原因补充:

(最多只允许输入30个字)