美文网首页
FaceBook 官方API Android 分享集成

FaceBook 官方API Android 分享集成

作者: 乘风破浪的程序员 | 来源:发表于2016-07-14 18:43 被阅读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=
    

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

    相关文章

      网友评论

          本文标题:FaceBook 官方API Android 分享集成

          本文链接:https://www.haomeiwen.com/subject/sooejttx.html