react-native使用FireBase实现google登陆

一、前置操作

首先下载这个包   yarn add @react-native-google-signin/google-signin

二、Google cloud配置

Google Cloud

去google控制台新建一个android项目,这时候需要用到你自己创建的keystore的sha1值,然后会让你下载一个JSON文件,先保存在本地,

这个json文件里面有client_id等信息。

三、Google play配置

去play后台创建一个app,使用自己创建的keystore证书打一个aab的包,上传测试,然后得到应用签名。

然后拿着这个sha1指纹,去FireBase控制台

三、FireBase配置

Firebase 管网

新建一个android应用 绑定上面拿到的应用签名,这里需要两个签名,一个是你本地keystore生成的sha1签名,google play后台的应用签名,因为google后台会为你这个app生成一个sha1 这个sha1 会跟你本地签名证书的sha1值不同,然后输入完成之后,会给你一个google-server.json文件,把这个文件放在你项目里android/app下的和app下的build.gradle同级。

四、项目配置

在你的android下的build.gradle里配置:

     

 然后在android/app/build.gradle配置

android/build.gradlebuildscript{ext{googlePlayServicesAuthVersion = "20.7.0"}}android/app/build.gradle顶部添加 apply plugin: 'com.google.gms.google-services'dependencies{implementation platform('com.google.firebase:firebase-bom:32.7.4')implementation 'com.google.firebase:firebase-analytics'}

五、login模块 

import { GoogleSignin } from '@react-native-google-signin/google-signin';//初始化google登陆
GoogleSignin.configure({webClientId:"此客户端ID在https://console.cloud.google.com获取"
});const onGoogleButtonPress = async () => {console.log('google login');try {await GoogleSignin.signOut();const res = await GoogleSignin.hasPlayServices({showPlayServicesUpdateDialog: true });console.log(res, '是否有google环境');if (res) {const { idToken } = await GoogleSignin.signIn();const loginRes = await overSeasAuthLogin({idToken,loginType: 1,os: Platform.OS === "android" ? 2 : 1,});console.log(loginRes, '登陆状态');}} catch (err) {console.log(err, 'err信息');}};

 idToken是google给你的一个token拿去给服务端校验,即可完成登陆。

客户端ID点击进去就能看到

具体信息参考https://react-native-google-signin.github.io/docs 

这是国外一友人写的文档,如果看的不太懂,私聊我即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#操作MySQL从入门到精通(4)——连接MySQL数据库

前言 我们创建好数据库、建立好数据库的表以后,我们就需要访问数据库了,比如将数据插入数据库的某张表中等一系列操作,在进行这些操作之前我们需要连接上数据库,本文就是详细讲解如何连接MySQL数据库的。 1、使用Navicat Premiu…

基于ssm+layui的图书管理系统

基于ssmlayui的图书管理系统 账户类型分为:管理员,用户管理员私有功能用户私有功能公共功能技术栈功能实现图 视频演示 账户类型分为:管理员,用户 图书管理系统主要登录账户类型为管理员账户与用户账户 管理员私有功能 账户管理…

厉害了!机器视觉在农业中的应用

机器视觉是一门涉及模式识别、神经生物学、计算机科学、人工智能、图像处理、心理物理学等诸多领域的交叉学科。主要是通过计算机对人类某些视觉方面的智能行为的模拟和再现,再处理并理解从客观事物的图像中提取到的信息,最终达到在实际检测和控制中应用的目的。近年来,随着…

PHP 生成图片

1.先确认是否有GD库 echo phpinfo(); // 创建一个真彩色图像 $image imagecreatetruecolor(120, 50);// 分配颜色 $bgColor imagecolorallocate($image, 255, 255, 255); // 白色背景 $textColor imagecolorallocate($image, 230, 230, 230); // 黑色文字// 填充背景 image…

【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒

目录 前言 正文 1.CanNm的状态机分析 2.ComM的状态机分析 3.诊断报文唤醒网络知识扩展

RecyclerView 源码分析之一

简书无法编辑保存了?什么bug?还得回CSDN来写。 写在前面,看RecyclerView源码有点"老虎吃天,无从下口"的感觉。多次提笔想写关于RecyclerView的源码相关文章,最终也是作罢。最大的原因还是感觉RecyclerView的…

Java学习笔记(12)

包 导包 Final 不能被改变的,修饰方法 类 变量 方法不能被重写 类不能被继承 变量,赋值一次,变成常量,不能再被赋值 final修饰引用数据类型,地址值不能变,里面的内容可以变 字符串是不可变的 源码中使…

ThreeJs 可视化大屏地图

效果图: 今天给各位提供一个可视化地图的案例和源码,关注下吧各位!回复"大屏地图" 获取工程 1、案例分析:主要使用了UI 美工图片,然后获取地图的json 数据绘制图形,贴图使用该区域的地图纹理进行…

基于SpringBoot和Vue的宠物商城网站

目录 一、 绪论1.1 研究背景1.2 研究目的1.3 研究意义 二、相关技术2.1 Spring Boot简介2.2 Vue简介2.3 前后端分离架构概述2.4 其他技术和工具 三、需求分析3.1 功能需求3.1.1 用户模块功能需求3.1.2 商品模块功能需求3.1.3 论坛模块功能需求3.1.4 留言板模块功能需求 3.2 用户…

异常机制总结

异常的本质_调试错误 异常是什么? 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常。 伪代码说明异常机制…

会员项目定价卡css3特效

会员项目定价卡css3特效,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 下载地址 会员项目定价卡css3特效代码

js静态分析,babel编译,vue的template编译

这三个概念——JavaScript 静态分析、Babel 编译和 Vue 的模板编译——在某种程度上都与代码转换相关,但它们具有不同的作用和实现原理。尽管如此,它们之间确实存在一些共同的地方: 预处理:所有这些技术在将代码或模板用于执行之前…

掌握Go语言:函数精髓,定义、参数、多返回值与应用(14)

在Go语言中,函数是一种独立的代码块,用于执行特定的任务或操作。函数可以接受输入参数并返回结果,也可以不接受任何参数或不返回任何结果。以下是关于Go语言函数的详细解释以及示例代码: 1. 函数的定义和调用 在Go语言中&#x…

谁将是RAG的头部玩家?

开篇 菩提修妙树,接引证法源,屠龙万仙阵,玉虚祭封神。 混战是国内技术圈的常态,在众仙跟风与追捧的大潮中,如何看清方向至关重要,决定谁最终将封神。 语言大模型(LLM),多模态(MM),…

代码随想录day22(1)二叉树:左叶子之和(leetcode404)

题目要求:计算二叉树所有左叶子之和 思路:本题应该满足两个条件,一是叶子节点,二是要求是左叶子。所以判断时,如果一个节点左孩子的左右孩子均为空,且其右孩子也为空,此节点的左孩子就为左叶子…

编程语言常识

看图区别编程语言 什么是强类型、弱类型语言?哪种更好? 强类型语言 强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。 在强类型语言中,变量的…

【洛谷 P8725】[蓝桥杯 2020 省 AB3] 画中漂流 题解(动态规划)

[蓝桥杯 2020 省 AB3] 画中漂流 题目描述 在梦境中,你踏上了一只木䇝,在江上漂流。 根据对当地的了解,你知道在你下游 D D D 米处有一个峡谷,如果你向下游前进大于等于 D D D 米则必死无疑。 现在你打响了急救电话&#xff…

使用sys给python运行程序传参

使用sys给python运行程序传参 import sys def main(argv1,argv2):img1 cv2.imread(argv1)img2 cv2.imread(argv2)finalImage_Stitching().blending(img1,img2)cv2.imwrite(panorama.jpg, final) if __name__ __main__:try: main(sys.argv[1],sys.argv[2])except IndexE…

【Eviews实战】——时序的平稳性检验

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

C++ 入门篇

目录 1、了解C 2、C关键字 2、命名空间 2.1 命名空间的定义 2.2 命名空间的使用 3. C输入与输出 4.缺省参数 4.1 缺省参数的概念 4.2 缺省参数的分类 5. 函数重载 5.1 函数重载的概念 5.2 C中支持函数重载的原理--名字修饰 6. 引用 6.1 引用概念 6.2 引用…