前言:

     在写这篇文章之前先吐槽一下自己的英文水平,之前一直没感觉,因为做的项目都是国内的项目,很少看英文文档。但是,自从换了一个工作之后,做的是国外的项目。并且,写了给第三方写了一个SDK,需要使用Google登录和Facebook登录。那么,就必须用原生登录,说到原生登录,那么就逃不掉要看英文文档。看了英文文档之后才感觉自己的英文是多么的差劲。好了,废话不多说,我们进入今天的正题。如何使用Facebook登录。

首先

当然是查看官方文档了,官方文档介绍的很清楚,并且更新比较及时。如果你不太想看英文文档,而去各种百度。那么,你可能会遇到各种各样的问题。

  • 1、引入Facebook的在线依赖

    //facebook登录
    implementation 'com.facebook.android:facebook-login:4.39.0'
    
  • 2、在清单文件中配置在Facebook申请的 appID和scheme

    <!-- facebook登录 --><meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="@string/facebook_app_id" /><activityandroid:name="com.facebook.FacebookActivity"android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"android:label="@string/app_name" /><activityandroid: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>
    

注意: 上面的 @string/facebook_app_id 换成你在facebook申请的AppID,@string/fb_login_protocol_scheme 换成Facebook给你分配的scheme。

其次

 上面的配置算是搞定了,那么就是代码的编写了,我这里为了方便,所以封装了一个Facebook登录类。
  • 1、首先看工具类的封装

1)、Facebook登录封装类

 private static CallbackManager mFaceBookCallBack;private static FaceBookLoginManager sInstance;private FaceBookLoginManager() {}/*** 单例** @return*/
public static FaceBookLoginManager getInstance() {if (sInstance == null) {synchronized (FaceBookLoginManager.class) {if (sInstance == null) {sInstance = new FaceBookLoginManager();}}}return sInstance;
}/*** 开始** @param context*/
public void faceBookLogin(Context context) {LoginManager.getInstance().logInWithReadPermissions((Activity) context,Arrays.asList("public_profile"));
}/*** 初始化*/
public void initFaceBook(final Context context,final OnLoginSuccessListener mListener) {mFaceBookCallBack = CallbackManager.Factory.create();if (mFaceBookCallBack != null) {LoginManager.getInstance().registerCallback(mFaceBookCallBack,new FacebookCallback<LoginResult>() {@Overridepublic void onSuccess(LoginResult loginResult) {if (loginResult != null) {if(mListener=null){mListener.onSuccess(result);}}}@Overridepublic void onCancel() {if(mListener=null){mListener.onCancel();}}@Overridepublic void onError(FacebookException error) {if(mListener=null){mListener.onError(error);}}});}
}/*** 设置登录结果回调** @param requestCode 请求码* @param resultCode  结果码* @param data        数据*/
public void setOnActivityResult(int requestCode, int resultCode, Intent data) {if (mFaceBookCallBack != null) {mFaceBookCallBack.onActivityResult(requestCode, resultCode, data);}
}

2)、接口

public interface OnLoginSuccessListener {void OnSuccess(LoginResult result);void onCancel();void onError(FacebookException error);
}

3)、LoginResult 类

public class LoginResult {
private final AccessToken accessToken;
private final Set<String> recentlyGrantedPermissions;
private final Set<String> recentlyDeniedPermissions;/*** The constructor.** @param accessToken                The new access token.* @param recentlyGrantedPermissions The recently granted permissions.* @param recentlyDeniedPermissions  The recently denied permissions.*/
public LoginResult(AccessToken accessToken,Set<String> recentlyGrantedPermissions,Set<String> recentlyDeniedPermissions) {this.accessToken = accessToken;this.recentlyGrantedPermissions = recentlyGrantedPermissions;this.recentlyDeniedPermissions = recentlyDeniedPermissions;
}/*** Getter for the new access token.* @return the new access token.*/
public AccessToken getAccessToken() {return accessToken;
}/*** Getter for the recently granted permissions.* @return the recently granted permissions.*/
public Set<String> getRecentlyGrantedPermissions() {return recentlyGrantedPermissions;
}/*** Getter for the recently denied permissions.* @return the recently denied permissions.*/
public Set<String> getRecentlyDeniedPermissions() {return recentlyDeniedPermissions;
}
}
  • 2、如何使用呢?

1)、初始化Facebook

FaceBookLoginManager.getInstance().initFaceBook(this,new OnLoginSuccessListener() {@Overridepublic void onSuccess(LoginResult result) {}@Overridepublic void onError(FacebookException ex) {}@Overridepublic void onCancel() {}});

2)、设置回调

/*** 设置登录结果回调** @param requestCode 请求码* @param resultCode  结果码* @param data        数据*/
public void setOnActivityResult(int requestCode, int resultCode, Intent data) {if (mFaceBookCallBack != null) {mFaceBookCallBack.onActivityResult(requestCode, resultCode, data);}
}

3)、调用登录

    mBtnSend=findViewById(R.id.btn_send);mBtnSend.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {FaceBookLoginManager.getInstance().faceBookLogin(MainActivity.this);}});

最后

 到此,Facebook的登录就完成了,当然,上面的工具类还可以进一步封装,并且整理成一个在线依赖库。

如果你对打包成在线依赖库不太熟的话,建议你去看我的另一篇文章Android 发布项目到jitpack详解。

Android Facebook原生登录相关推荐

  1. Cocos Creator Android 平台 Facebook 原生登录

    在做海外项目中,经常需要接入Facebook SDK ,现将CocosCreator Android 平台 Facebook 登录的接入流程记录下来,以备有需要的朋友做参考. 一.准备工作 1.首先在 ...

  2. Android facebook VK 登录与分享 开源SDK

    自己封好的SDK 直接调用 就可以登录 包含facebook VK 登录分享 首先导入SDK 在项目gradle 添加FB,VK的引用 如果你不需要修改源码 直接导入arr文件 比较方便 reposi ...

  3. Android FaceBook sdk 登录接入

    最近鼓捣一些外面的东西,学习了下FaceBook sdk的接入过程.当然会用到一些工具才可以进行这些操作的,这里就不多说了.大家可以看看这个Android 版 Facebook 登录官方文档,跟着步骤 ...

  4. Android Facebook第三方登录 20200529

    2020年5月29日09点43分 登录Facebook开发者后台 创建应用 这里点击产品的加号,在右侧选择Facebook登录里面的设置.这样左边的产品下面才会有一个Facebook登录. 打开And ...

  5. Android FaceBook原生广告接入教程(精简版)

    公司项目主要做海外市场,并且是资讯类的产品,所以接入一些广告公司的广告是一项不错的创收,昨天下午产品告诉我要马上接入Facebook的原生广告需求,于是下午就开始阅读Facebook广告接入的官方开发 ...

  6. Android 微信原生登录,支付,以及一些奇奇怪怪的问题。(wxApi.isWXAppInstalled 一直返回false)

    导入依赖 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.3.1' 登录 将微信注册到APP 可以在on ...

  7. 11: facebook原生登录

    2019独角兽企业重金招聘Python工程师标准>>> 使用https://github.com/bisrael/cordova-plugin-facebook插件 cordova ...

  8. Android 集成原生google,facebook 登录分享sdk

    前言 海外版app集成三方登录分享,早期采用umeng sdk,由于googleplay对用户隐私及用户数据的使用有比较严格规定.正好 umeng sdk会后台采集app信息,触发用户隐私相关政策条款 ...

  9. Android接入三方登录——QQ、微信、Facebook、Twitter

    Android接入三方登录--QQ.微信.Facebook.Twitter 避坑指南 facebook错误1: facebook错误2: QQ 微信 Facebook Twitter 补充: 避坑指南 ...

最新文章

  1. 设计模式之原型模式prototype
  2. java访问map_java.map使用
  3. 用javah 导出类的头文件, 常见的错误及正确的使用方法
  4. wxWidgets:wxDragImage类用法
  5. Vue项目中Table设置 render 函数
  6. windows内核情景分析---进程线程1
  7. Java Pattern类和Matcher类的使用
  8. C#设计模式之23-访问者模式
  9. java链接mysql原始方法_java连接mysql数据库的方法
  10. JavaScript运算符优先级
  11. 征集对智能视觉组eIQ的使用反馈
  12. 微型计算机内存一般为多少,微型计算机内存容量的基本计量单位
  13. 2020 蓝桥杯大学模拟赛(三) - 程序设计:养猫题解
  14. 用于图像分割的卷积神经网络:从R-CNN到Mask R-CNN
  15. 合宙air105上手记录
  16. 儿童全脑九大能力,3-6岁的家长都应该知道
  17. CCSv5.3的安装
  18. 记录一次错误:Springboot访问前端页面“No mapping for GET”
  19. 2022年湖北省大学生电子设计竞赛A题(单项交流电子负载)赛后总结
  20. rpm, tar, gz, bz, bz2, rar, zip, lha, deb, 解压

热门文章

  1. java随机抓取网站上的图片_抓取一个网站特定的全部图片(JAVA)
  2. 如何清除WinME系统_restore目录下的病毒
  3. mysql normsinv_软件教程热搜榜_最新软件教程热门新闻_软件教程资讯大全-PC下载网资讯网...
  4. 树莓派常用的软件(记录)
  5. faceu激萌相机里面vue_faceu激萌是什么_faceu激萌功能特点介绍_3DM手游
  6. 困扰一周的配环境问题——RTX3090+CUDA11.1
  7. PSD 格式文件除了 PS ,还能用什么软件打开?
  8. 计算机一级考试实训在线做,程序设计能力 在线实训系统
  9. 概率统计Python计算:用样本均值和方差计算总体参数的点估计
  10. 关于windows下安装wampserver服务器系统丢失msvcr100.dll及VCRUNTIME140.dll的解决办法