android应用集成facebook登录

    之前都是做国内的应用开发,没有用过国外的三方登录,比如谷歌登录、facebok登录,最近参与了一个海外的支付相关的项目,调研了一下谷歌登录和facebook登录,其实调研之后觉得也是很简单的,尤其是facebook登录,跟国内的三方登录集成几乎没有什么差别。

    下面说说facebok登录的集成流程吧:

    首先 你需要在facebook开发者官网上面注册一个开发者账号(如果你有facebook账号的话也是可以的),网址为:developers.facebook.com,下面就是官网的页面:

    在页面的右上有一个我的应用,点击在下拉菜单中创建自己的应用:

    这点击“添加新应用”,会弹出下面这个页面,一个填写应用名称,一个填写自己的邮箱,然后点击“创建应用编号”完成创建应用的操作:

    

    下面是创建应用之后进入的应用的后台配置页面,里面包括应用的id:

    选中左边菜单栏的“添加产品”选项卡,在右边的功能选择里面选择登录这个模块,点击设置:

    然后选择android:

    选择Android之后会进入到下面的页面:

    我们会看到流程总共分为10个步骤:

    第一步:选择自己的应用,在这里我们的建的demo应用是logindemo:

    第二步:官网给出的步骤是下载“facebook”应用,其实不用下载,他们有自己的网页版登录,这一步可以略过:

    第三步:需要在project下面的build.gradle里面的buildscript { repositories {}} 里面加一个mavenCentral(),加完之后的效果是这样的:

    然后在app下面的build.gradle里面的dependencies里面加一句:compile ‘com.facebook.android:facebook-login:[4,5)‘ ,然后构建项目,就会自动下载引入facebook的sdk;

    第四步:编辑 Manifest 清单:

    ①:打开 /app/src/main/res/values/strings.xml 文件;

    ②:添加如下所示的代码

    ③:<string name="facebook_app_id">你在facebook上面创建的应用id</string>

    <string name="fb_login_protocol_scheme">你在facebook上面创建的应用id</string>

    ④:打开 /app/manifest/AndroidManifest.xml 文件,将 uses-permission 元素添加到清单文件中:

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

    ⑤:在 application 元素后添加以下 meta-data 元素、一个针对 Facebook 的 activity 元素以及一个针对 Chrome 自定义选项卡的 activity 元素和意向筛选条件。将 @string/appname 替换为您的 Facebook 应用的名称:

      <meta-data android:name="com.facebook.sdk.ApplicationId"

        android:value="@string/facebook_app_id"/>

      <activity android:name="com.facebook.FacebookActivity"

        android:configChanges=

        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"

        android:label="@string/app_name" />

      <activity

        android:name="com.facebook.CustomTabActivity"

        android:exported="true">

        <intent-filter>

          <action android:name="android.intent.action.VIEW" />

          <category android:name="android.intent.category.DEFAULT" />

          <category android:name="android.intent.category.BROWSABLE" />

          <data android:scheme="@string/fb_login_protocol_scheme" />

        </intent-filter>

      </activity>

    第五步:将软件包名称与应用的默认类关联:

    软件包名称:填写软件的包名

    默认活动类名称:填写默认活动类包名和类名

    第六步:为应用提供开发和发布密钥散列:

      为确保您的应用与 Facebook 之间互动的真实性,您必须先向我们提供您的开发环境下的 Android 密钥散列。如果您的应用已经发布,则还应该同时提供发布密钥散列。

      生成开发密钥散列

      每个 Android 开发环境都将会有一个唯一的开发密钥散列。要生成开发密钥散列,在 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

      此命令将针对您的开发环境生成一个包含 28 个字符的唯一密钥散列。将其复制粘贴到下面的字段中。对于参与应用开发的每个人的开发环境,您必须分别提供开发密钥散列。

      生成发布密钥散列

      Android 应用必须先使用发布密钥进行电子签名,然后才能上传到商店中。要生成发布密钥散列,请在 Mac 或 Windows 内运行以下命令,并替换您的发布密钥别名和 keystore 路径:

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

      这会生成一个包含 28 个字符的字符串,您应将其复制粘贴到下面的字段中。另外,请参阅 Android 文档,了解有关应用签名的信息。

    

    第七步:启用单点登录,选择“是”,然后save:

    -------------------------------------------------------配置结束----------------------------------------------------

    至此,所有的配置项都已完成,下面就是涉及到代码集成阶段了,也就是facebook登录在你的应用中的使用。

    facebook提供了两种使用方式,一种是直接使用它的UI,它提供了一个LoginButton的一个自定义view,样式可以稍微修改,把它放到你的布局中就可以使用了,使用方式很简单;第二种方式是直接自定义任何形式的按钮添加监听,在建厅里面直接调代码执行facebook登录操作。

    方式一:使用LoginButton:

    在XML代码中添加LoginButton这个view:

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

      android:layout_width="match_parent"

      android:layout_height="match_parent"

      android:orientation="vertical">

      <com.facebook.login.widget.LoginButton

        android:id="@+id/login_button"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"

        android:layout_marginTop="30dp"

        android:layout_marginBottom="30dp" />

    </LinearLayout>

    它的样式是这样的:

    这是未登录的样式,已登录的样式只是文案变成了“Log out”字样,点击即可完成退出,这是在xml代码的集成,下面是在java代码中的集成方式:

      public class MainActivity extends FragmentActivity {

        CallbackManager callbackManager;

        @Override

        public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          callbackManager = CallbackManager.Factory.create();

          LoginButton loginButton = (LoginButton) view.findViewById(R.id.usersettings_fragment_login_button);

          loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override

            public void onSuccess(LoginResult loginResult) {

               Toast.makeText(getApplicationContext(), "facebook登录成功", Toast.LENGTH_SHORT).show();

            }

            @Override

            public void onCancel() {

              Toast.makeText(getApplicationContext(), "facebook登录取消", Toast.LENGTH_SHORT).show();

            }

            @Override

            public void onError(FacebookException error) {

              Toast.makeText(getApplicationContext(), "facebook登录错误", Toast.LENGTH_SHORT).show();

            }

          });

        }

      }

    最后,调用 callbackManager.onActivityResult,通过 callbackManager 将登录结果传递至 LoginManager。

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

      super.onActivityResult(requestCode, resultCode, data);

      callbackManager.onActivityResult(requestCode, resultCode, data);

    }

    方式二:使用自己的定义的界面:

    在XML代码中添加任意一个button:

    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

      android:layout_width="match_parent"

      android:layout_height="match_parent"

      android:gravity="center"

      android:orientation="vertical">

      <Button

        android:id="@+id/facebook_login"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="脸书登录"/>

    </LinearLayout>

    在java代码中添加按钮的监听并在监听中提供提供登录操作:

    mFacebookLogin.setOnClickListener(new View.OnClickListener() {

      @Override

      public void onClick(View v) {

        LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile"));

      }

    });

    还要注册一个监听:

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

      @Override

      public void onSuccess(LoginResult loginResult) {

        Toast.makeText(getApplicationContext(), "facebook登录成功", Toast.LENGTH_SHORT).show();

      }

      @Override

      public void onCancel() {

        Toast.makeText(getApplicationContext(), "facebook登录取消", Toast.LENGTH_SHORT).show();

      }

      @Override

      public void onError(FacebookException error) {

        Toast.makeText(getApplicationContext(), "facebook登录错误", Toast.LENGTH_SHORT).show();

      }

    });

    这种方式的好处就是可以保留有自己的UI风格,不产生UI设计上的冲突。

    至此两种登录方式介绍完毕

    其实介绍到这还没有结束,因为我们一把情况下还要获取facebook用户的个人公共信息,还要对是否登录进行判断,所以,一些细节性的收尾的工作换要处理:

    facebook提供的一个监听器,用来监听用户个人信息发发生变化,这个监听器叫ProfileTracker,我们可以这样:

    创建一个ProfileTracker对象:

    private ProfileTracker profileTracker;

    profileTracker = new ProfileTracker() {

      @Override

      protected void onCurrentProfileChanged(

        Profile oldProfile,

        Profile currentProfile) {

        // App code

        if(currentProfile != null){

          Toast.makeText(getApplicationContext(), "个人信息 = " + currentProfile.getFirstName(), Toast.LENGTH_SHORT).show();

        }

      }

    };

    在这里个人信息分为oldProfile和currentProfile,但是这个监听用的时候要注意,因为它登录和退出都会触发这个方法,所以要做飞非空判断,并且可以以此来记录是否已登录等行为。

    好了,就写到这吧,希望这篇文章对大家有所帮助。

    如要转载,请注明出处,谢谢!

    欢迎关注我的简书博客,地址是:

    http://www.jianshu.com/u/da06e00edefa

    欢迎大家关注我的微信公众号,我会定期发布一些博客,分享一些知识点。

    

时间: 2024-08-29 15:54:40

android应用集成facebook登录的相关文章

Android 应用程序集成FaceBook 登录及二次封装

1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台  https://developers.facebook.com/apps 2.创建账号并且获得 APP ID 图一 图二 图三 图四 图五 3.获取app签名的Key Hashes 值(两种方式) 3.1方法1: 1 package com.pegasus.map.presentation.utils; 2 import android.content.Contex

Android平台接入Facebook登录

官方教程地址: https://developers.facebook.com/docs/android/getting-started 开发环境为Android Studio,官方要求SDK最低版本为“API 15: Android 4.0.3”. 一.创建应用 1.激活账号 按照要求创建APP,生成appId. 注意:在填写APP名称的时候,不能包含任何有关facebook的名字或简写,否则无法通过. 2.配置Gradle文件 配置app下的build.gradle文件. 如下: //添加到

Android 应用程序集成FaceBook 登录

1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 2.创建账号并且获得 APP ID 图一 图二 图三 图四 图五

android集成twitter登录

Twitter曾经举行了自己四年以来的第一场开发者大会.而这场名为"Flight"的大会,也是以后它的年度惯例. 这次大会的主题也完全围绕开发者进行.大会的焦点是一个名叫Fabric的新SDK,里面包括三个开发者工具包:面向Twitter本身的 Twitter Kit.面向Twitter广告网络的MoPub,以及基于Twitter 2013年收购的移动应用崩溃分析工具Crashlytics的Crashlytics Kit. 我还是先贴上twitter登录的官方网站:https://de

Android 集成FaceBook实现第三方登陆

一,必要准备: 上面是官方英文文档,下面详细解释一下: Facebook app : 即需要在Facebook Developer平台,创建自己的App, Facebook SDk: 添加Facebook SDK到自己的项目中, Facebook App ID: 需要得到在Facebook Developer平台创建的App 的ID. Android Key Hash: 得到Android Hash Key. Facebook Activity: 将FaceBook Activity包含在你的项

在Android上实现使用Facebook登录(基于Facebook SDK 3.5)

准备工作: 1.       Facebook帐号,国内开发者需要一个vpn帐号(网页可以浏览,手机可以访问) 2.       使用Facebook的SDK做应用需要一个Key Hashes值. 2.1   首先要有你的项目的签名文件 2.2   然后到http://gnuwin32.sourceforge.net/packages/openssl.htm下载 OpenSSL for Windows的Binaries版本,其他操作系统可以到http://www.openssl.org 的官网查

友盟社会化Android组件之第三方登录

前段时间公司需要,逐步了新浪微博.腾讯qq.微信等授权登录验证的问题.如果要一个个申请,看文档写代码也是很多流程的.干脆用友盟社会化Android组件之第三方登录.友盟是集成了这些平台,还有其他主流的平台的.我在这里主要讲一下友盟里面微博登录.先看看友盟是怎么介绍自已的. 一.友盟社会化分享介绍 友盟社会化分享组件,帮助移动应用快速具备微信分享,微博分享.登录.评论.喜欢等社会化组件功能,助力产品推广,并提供实时.全面的社会化数据统计分析服务,是国内最大的社会化分享SDK. 支持各大社交平台 精

Android中集成第三方支付

常见的第三方支付解决方案 支付宝支付 微信支付 银联支付 Ping++统一支付平台(需要继承服务器端和客户端) 短信支付 支付宝的集成流程 相关资料链接: 支付宝支付指引流程:支付指引流程 支付宝Android端集成流程:Android端集成流程 首先,支付宝支付准备工作 首先登录[支付宝开放平台]http://open.alipay.com/platform/home.htm,创建应用,并给应用添加App支付功能 由于App支付功能需要签约,因此需要上传公司信息和证件等资料进行签约 签约成功后

无处不在,详解iOS集成第三方登录(SSO授权登录&lt;无需密码&gt;)

1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可以和今天的一起集成使用. 2.集成前的准备工作 2.1.去ShareSDK(现为Mob)注册帐号,下载SDK,然后添加自己的应用后得到AppKey 下载地址:http://sharesdk.cn/Download 2.2.申请第三方登录的Appkey 例如: 新浪微博.腾讯微博.QQ.微信.豆瓣应用.人