使用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官方提供的集成...

Facebook SDK集成之分享篇

前情概要 Facebook SDK集成之纲要篇 Facebook SDK集成之准备篇 Facebook SDK集成之登录篇 集成环境github上的环境说明有点瑕疵, 在Wosao/readme上做...

Android Studio集成Facebook SDK

前言上篇文章说明了AS如何导入运行Facebook SDK Sample http://blog.csdn.net/shrimpcolo/article/details/49150829这篇继续说明...

Facebook SDK 的添加基本流程(Android)

1.首先你要打开 Android Studio 创建一个新的工程 出来后就是这样的,如下图 2.然后我们要添加 FaceBook 的一些依赖,主要是 Gradle Scripts -- bui...

Android Studio集成Facebook SDK Sample

前言虽然国内还没法直接使用facebook, 为了将来,有必要将 FB的SDK相关常用内容做个说明。 实例源码参看 我自己的 Facebook-SDK-Dev关于FB的内容,需要讲解2部分: FB ...

Android ShareSDK第三方登录(分别有新浪、QQ、微信、Facebook、Linkedin、Google等等)

快速集成: 1. 获取ShareSDK的AppKey          申请ShareSDK的appkey的流程 2. 下载SDK 下载SDK请点这里 下载页如图所示: 点...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Android下进行 Facebook 分享

1.  下载 Facebook SDK 2.  在facebook下设置app的相关信息 3.  示例代码:      package com.example.testshare; import c...

Android关于分享到Facebook

接入Facebook SDK的一些坑

android 集成Facebook 分享功能

开场白 依然给大脸书承接上一篇 android 集成facebook的登录功能首先分享功能 要在清单文件中添加如下内容提供者:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Android Studio集成FacebookSDK之Facebook分享功能添加
举报原因:
原因补充:

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