FaceBook 官方API Android 分享集成

2016-07-14  本文已影响3007人  乘风破浪的程序员

此文档基于 FaceBook 官方文档

在 Android 平台分享,以后会推出Facebook登录

本指南详细介绍如何通过 Android 应用将内容分享到 Facebook。用户通过您的应用分享时,相关内容会在其时间线上显示,并且可能在其好友的动态消息中显示。
用户还可通过您的应用将内容分享到 Facebook Messenger。

Android Studio 设置

要在项目中使用 Facebook SDK,请将其添加为构建依赖项,然后导入。
1.前往 Android Studio | New Project(新项目)| MinimumSDK(最低 SDK)
2.选择 API 15: Android 4.0.3或更高版本,然后创建新项目。
3.创建新项目后,打开 your_app | build.gradle(您的应用 | build.gradle)



4.将以下字串添加至模块级 /app/build.gradle的 dependencies之前:

repositories { mavenCentral() }

5.将配置最新版本 Facebook SDK 的 compile 依赖项添加到 build.gradle
文件:

dependencies { compile 'com.facebook.android:facebook-android-sdk:4.+'}

6.构建项目,然后即可将 com.facebook.FacebookSdk 导入应用。
使用 Facebook SDK 之前,需要先进行初始化。添加调用 FacebookSdk.sdkInitialize或onCreate 内 Activity中的 Application:

 // Add this to the header of your file:import com.facebook.FacebookSdk;
// Updated your class body:
@Override
public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     FacebookSdk.sdkInitialize(getApplicationContext());  
// Initialize the SDK before executing any other operations,
// especially, if you're using Facebook UI elements.
}

添加 Facebook 应用编号
然后向项目的 strings 文件添加您的 Facebook 应用编号,并更新 Android 清单:
1.打开 strings.xml文件。示例路径:/app/src/main/res/values/strings.xml。
2.添加新的字符串(名称为 facebook_app_id,值为 Facebook 应用编号)
3.打开 AndroidManifest.xml
4.将 uses-permission元素添加到清单:

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

5.将 meta-data元素添加到 application元素内:

<application android:label="@string/app_name" ...> 
<meta-data android:name="com.facebook.sdk.ApplicationId" 
android:value="@string/facebook_app_id"/> </application>
使用登录或分享功能

要使用 Facebook 登录或分享功能,还需要将 FacebookActivity
添加到清单:

<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" />


发送图片或视频
如果要通过 Android 版 Facebook 应用分享链接、图片或视频,还需要在清单文件中声明FacebookContentProvider。
在 authorities值的末尾添加您的应用编号。例如,如果 Facebook 应用编号是 1234,则声明应如下图所示:


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

结合使用 SDK 和 ProGuard无需执行任何其他步骤,即可对 Android 版 Facebook SDK 使用 ProGuard。如需获取关于 Proguard 的说明,请参阅 Android Tools Project Site 的 Running ProGuard 部分

创建开发密钥哈希

Facebook 使用密钥哈希验证您的应用和 Facebook 应用之间的互动。如果运行使用 Facebook 登录功能的应用,则您需要向 Facebook 开发者资料页添加 Android 开发密钥哈希。
对于您发布的应用版本,也需要生成和设置发布密钥哈希
在 OS X 或 Windows 内,您可以直接生成密钥哈希,也可以使用Settings.getApplicationSignature(Context)
返回的值获得哈希。如需获取详细说明,请参阅运行示例应用
后续步骤
安装 Android 版 Facebook SDK 并配置 Facebook 应用编号后,将激活以下功能:
Android 版 Facebook 登录
应用事件
“分享”和“发送”对话框
设置发布密钥哈希
要验证您的应用与 Facebook 之间的信息交换,您需要生成一个发布密钥哈希,并将它添加到 Facebook 应用编号内的 Android 设置。如果不执行这个操作,当应用发布到商店后,应用内的 Facebook 集成可能不会正常运行。
在之前的步骤中,您应该已使用适用于您的开发环境的密钥哈希更新 Facebook 开发者设置
发布应用后,应用通常会签上您的开发环境的不同签名。所以,请务必创建发布密钥哈希,并将它添加到 Facebook 应用编号的 Android 设置。
要生成发布密钥哈希,请在 Mac 或 Windows 内运行以下命令,并替换您的发布密钥别名和 keystore 路径。在 OS X 中运行:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

在 Windows 中:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

请务必使用您在首次创建发布密钥时设置的密码。
此命令将生成包含 28 个字符的字符串。复制此发布密钥哈希,并将其粘贴至 Facebook 应用编号的 Android 设置。


此外,还应检查 Facebook 应用编号的 Android 设置是否还包括正确的包名和 Android 包的主要活动类别。
结合使用 Facebook SDK 和 Maven
您可以声明 Maven 与 Android 版 SDK 最新可用版本的依赖关系:

<dependency> 
<groupId>com.facebook.android</groupId> 
<artifactId>facebook-android-sdk</artifactId> 
<version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

示例应用疑难解答

如果无法正常运行示例应用,则可能与密钥哈希有关。您可能会遇到以下情况:

显示原生“登录”对话框,但在接受权限后,您仍然处于退出状态。同时,Logcat 还包括一个异常:

12-20 10:23:24.507: 
W/fb4a:fb:OrcaServiceQueue(504)
:com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id

显示非原生“登录”对话框,同时显示一条错误消息:“..App is Misconfigured for facebook login...”(..应用的 Facebook 登录配置错误...)。

检查密钥哈希,确保使用了正确的密钥哈希。I您还可以手动修改示例代码,改为正确的密钥哈希。例如,在 HelloFacebookSampleActivity类中,暂时更改 onCreate():

@Override
public void onCreate(Bundle savedInstanceState) { 
             super.onCreate(savedInstanceState); 
 // 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) { } ...

保存更改,然后重新运行示例代码。检查 Logcat 的消息输出,应与下图相似:

12-20 10:47:37.747: D/KeyHash:(936): 
478uEnKQV+fMQT8Dy4AKvHkYibo=

开发者资料页保存密钥哈希。重新运行示例,验证是否可以成功登录。

上一篇下一篇

猜你喜欢

热点阅读