iOS接入Google登录

目录

1.在Google Cloud后台配置客户端ID

2.iOS配置URL Types​编辑

3.代码实操


1.在Google Cloud后台配置客户端ID

        首先要在 Google Cloud 中创建一个项目。新创建的Project需要先配置同意屏幕。一共有4步骤需要配置。

        1.OAuth 同意屏幕

                User Type选择"外部"进行创建。填写必必要的信息,应用名称、用户支持电子邮件地址、开发者电子邮件地址 。

        2.范围

                该步骤选择默认即可

        3.测试用户

                必须要添加测试用户(只有填写的测试用户才能登录测试)

        4.摘要

                所有信息会在这里展示,可以进行修改。

        创建OAuth客户端ID

        保存下载的JSON文件,文件中有一个REVERSED_CLIENT_ID字段后续会用到。

2.iOS配置URL Types

         在项目中AddPackage,填写GoogleSignIn

3.代码实操

        此代码支持GoogleSignIn 6.X版本,不支持7.0.0版本

        GoogleSignInHelper.h

#ifndef GoogleSignInHelper_h
#define GoogleSignInHelper_h// A view controller for the Google Sign-In button which initiates a standard
// OAuth 2.0 flow and provides an access token and a refresh token. A "Sign out"
// button is provided to allow users to sign out of this application.
@interface GoogleSignInHelper : NSObject@property(nonatomic, readonly) UIViewController* viewController;+ (GoogleSignInHelper *)getInstance;-(void)signIn;
-(void)signOut;@end#endif /* GoogleSignInHelper_h */

        GoogleSignInHelper.m 

#import "GoogleSignInHelper.h"#import <GoogleSignIn/GIDSignIn.h>
#import <GoogleSignIn/GIDGoogleUser.h>
#import <GoogleSignIn/GIDAuthentication.h>static NSString * const kClientID = @"com.googleusercontent.apps.462065624000-ducjftkt3lh1ini7f7q7j5ueq2vmo5o9";@implementation GoogleSignInHelper {// Configuration options for GIDSignIn.GIDConfiguration *_configuration;
}static GoogleSignInHelper *instance;+ (GoogleSignInHelper *)getInstance
{if (!instance) {instance = [[GoogleSignInHelper alloc] init];}return instance;
}- (id) init
{if (self = [super init]) {if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0) {NSArray* array = [[UIApplication sharedApplication] windows];UIWindow* window = [array objectAtIndex:0];_viewController = (UIViewController*)[[[window subviews] objectAtIndex:0]nextResponder];} else {_viewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];}_configuration = [[GIDConfiguration alloc] initWithClientID:kClientID];}return  self;
}-(void)signIn
{[GIDSignIn.sharedInstance signInWithConfiguration:_configurationpresentingViewController:_viewControllercallback:^(GIDGoogleUser * _Nullable user,NSError * _Nullable error) {if (error != nil) {if (error.code == kGIDSignInErrorCodeHasNoAuthInKeychain) {NSLog(@"The user has not signed in before or they have since signed out.");} else {NSLog(@"%@", error.localizedDescription);}} else {NSString *userId = user.userID;                  // For client-side use only!NSString *idToken = user.authentication.idToken; // Safe to send to the serverNSString *fullName = user.profile.name;NSString *givenName = user.profile.givenName;NSString *familyName = user.profile.familyName;NSString *email = user.profile.email;// todo:}}];
}-(void)signOut
{[GIDSignIn.sharedInstance signOut];
}@end

2023/5/19

        GoogleSignIn库更新到7.0.0版本,此文章不再适用。

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

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

相关文章

「超全!」谷歌大神 LeetCode 刷题笔记 PDF 分享

这是一本面向有C++编程基础,但缺乏刷题经验的读者的教科书和工具书(不适合完全的编程小白喔);同时,这是一本总结了15种常见类型题,50种细分类型题,101道题解的LeetCode刷题指南~ 作者高畅是谷歌无人车部门(Waymo)的工程师,从事计算机视觉和机器学习方向。 他在美国…

《LeetCode》—— 哈希

今天刷题讲解的主要讲的是关于——哈希这个知识点的题目讲解。 目录 &#xff08;一&#xff09;缺失的第一个正整数 &#xff08;二&#xff09;数组中只出现一次的两个数字 1、直接法 2、哈希 &#xff08;三&#xff09;直线上最多的点数 &#xff08;一&#xff09;缺…

文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题

五、MAX-HEAPIFY的代码效率较高&#xff0c;但第 10 行中的递归调用可能例外&#xff0c;它可能使某些编译器产生低效的代码。请用循环控制结构取代递归&#xff0c;重写 MAX-HEAPIFY代码。 文心一言&#xff1a; 以下是使用循环控制结构取代递归调用的 MAX-HEAPIFY 代码&…

【Day18】LeetCode算法刷题[1694. 重新格式化电话号码 ] [202.快乐数]

刷题打卡&#xff0c;第十八天 题目一、1694. 重新格式化电话号码题目二、202.快乐数 题目一、1694. 重新格式化电话号码 原题链接&#xff1a;1694. 重新格式化电话号码 题目描述&#xff1a; 给你一个字符串形式的电话号码 number 。number 由数字、空格 、和破折号 - 组…

List解答LeetCode杨辉三角

作者&#xff1a;月亮嚼成星~ 博客主页&#xff1a;月亮嚼成星~的博客主页 专栏&#xff1a;数据结构与算法 工欲善其事必先利其器&#xff0c;给大家介绍一款超牛的斩获大厂offer利器——牛客网 点击免费注册和我一起刷题吧 目录 了解杨辉三角 题目要求&#xff1a; 解答思…

张朝阳开课手推E=mc²,李永乐现场狂做笔记!CEO当太久都忘了他是MIT物理博士...

晓查 萧箫 明敏 鱼羊 发自 凹非寺量子位 | 公众号 QbitAI 张朝阳当物理老师还真是当上瘾了。 刚刚直接完成了一场线下课&#xff0c;当场手推质能方程&#xff0c;一整面黑板墙都差点没盛下。 这个姿势&#xff0c;是不是有你大物老师内范儿了&#xff08;手动狗头&#xff09;…

文心一言 VS 讯飞星火 VS chatgpt (25)-- 算法导论4.2 7题

七、设计算法&#xff0c;仅使用三次实数乘法即可完成复数 abi和cdi 相乘。算法需接收a、b、c和d 为输入&#xff0c;分别生成实部 ac-bd 和虚部adbc。 文心一言&#xff1a; 可以使用如下算法来计算复数 abi 和 cdi 的积&#xff0c;且只需进行三次实数乘法&#xff1a; 1.…

文心一言 VS 讯飞星火 VS chatgpt (24)-- 算法导论4.2 6题

六、用Strassen 算法作为子进程来进行一个 knn 矩阵和一个nkn 矩阵相乘&#xff0c;最快需要花费多长时间?对两个输入矩阵规模互换的情况&#xff0c;回答相同的问题。 文心一言&#xff1a; Strassen 算法是一种用于矩阵乘法的分治算法&#xff0c;它将原始的矩阵分解为较小…

文心一言 VS 讯飞星火 VS chatgpt (41)-- 算法导论5.4 5题

五、在大小为n的集合中&#xff0c;一个k字符串构成一个k排列的概率是多少?这个问题和生日悖论有什么关系? 文心一言&#xff1a; 在大小为n的集合中&#xff0c;一个k字符串构成一个k排列的概率是1/k!&#xff0c;这是由于排列的总数是k!&#xff0c;而每个字符串被选中的…

文心一言 VS 讯飞星火 VS chatgpt (18)-- 算法导论4.1 5题

五、使用如下思想为最大子数组问题设计一个非递归的、线性时间的算法。从数组的左边界开始&#xff0c;由左至右处理&#xff0c;记录到目前为止已经处理过的最大子数组。若已知 A[1…j]门的最大子数组&#xff0c;基于如下性质将解扩展为 A[1…j1]的最大子数组:A[1…j1]的最大…

张朝阳开课手推E=mc²,李永乐现场狂做笔记!CEO当太久都忘了他是MIT物理博士

张朝阳当物理老师还真是当上瘾了。 刚刚直接完成了一场线下课&#xff0c;当场手推质能方程&#xff0c;一整面黑板墙都差点没盛下。 这个姿势&#xff0c;是不是有你大物老师内范儿了&#xff08;手动狗头&#xff09;。 ‍没地方继续推导了&#xff0c;擦黑板前还要感慨一句…

AI 绘画 - 建筑绘图辅助设计之 SD 基础

前情提要 如果你想学会一门东西&#xff0c;那么就给交给自己一个明确的任务&#xff0c;然后独立完成&#xff0c;之后我们就可以掌握这门技术了&#xff1b; 简介 SD建筑绘画主要目的是将建筑概念转化为可视化的表达形式&#xff0c;以便更好地传达设计理念给业主、团队成…

AI 绘画 - 建筑绘图辅助设计之模型训练

前情提要 2023-06-18 周日 杭州 小雨 小记: 昨天搞的好累&#xff0c;10点左右就想着先躺一会儿&#xff0c;然后就睡过去了&#xff0c;很奇怪&#xff0c;如果进行 AI 绘画&#xff0c;晚上就会做很奇怪的梦&#xff0c;说不上来的那种感觉&#xff0c;就是莫名的不舒服。 …

如何使用Midjourney辅助建筑设计,常用的提示和使用效果展示(内附Midjourney提示词网站)

文章目录 一.Midjourney建筑设计的提示技巧1. prompt模板12.prompt模板2 二、著名建筑师为例1.Zaha Hadid&#xff08;扎哈哈迪德&#xff09;2.Ludwig Mies van der Rohe&#xff08;路德维希密斯凡德罗&#xff09;3.Renzo Piano&#xff08;皮亚诺&#xff09;4.Stefano Boe…

解药 or 毒药:ChatGPT辅助设计,规划师和建筑师要失业了吗?

​人工智能聊天机器人ChatGPT火爆全球&#xff0c; 规划师笔记也紧赶潮流&#xff0c;快速尝试&#xff0c; AI与设计发生碰撞&#xff0c; 会产生怎样的火花&#xff1f; 运用AI帮助写文案、作图、视频剪辑、游戏制作等等随着2021被称为元宇宙元年&#xff0c;近些年来AI在…

谈人工智能AI的崛起:是威胁人类的革命性变革?--元理先生

随着OpenAI推出ChatGPT后&#xff0c;全球都在疯狂的推进人工智能的发展进程&#xff0c;而人工智能的迅速发展和应用&#xff0c;使我们面临着一个前所未有的挑战&#xff1a;人工智能是否将威胁到人类工作岗位的存在&#xff1f;元理先生将与大家探讨人工智能可能对人类工作造…

欧盟又出手!这次盯上了AI

今年称之为AI大年&#xff0c;一点都不为过。一个ChatGPT就引爆了全球的AI产业&#xff0c;它就像一颗久旱逢甘霖的草木&#xff0c;野蛮生长着。 木秀于林&#xff0c;AI风头正盛。作为全球最活跃的经济联盟之一&#xff0c;欧盟毫无疑问地也盯上了AI这个大明星。欧盟委员会执…

冯·诺依曼发表《第一份草案》 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 6 月 30 日。在电影史上&#xff0c;电影发展中一个重要步骤是彩色电影于 1930 年左右引入市场&#xff0c;而在 1948 年的今天&#xff0c;梅兰芳主演中国第一…

web前端Vue项目搭建流程

Node.js安装教程 一、安装环境 node.js下载官网: nodejs官网. 二、安装步骤 1、双击安装包&#xff0c;一直点击下一步。 2、点击change按钮&#xff0c;更换到自己的指定安装位置&#xff0c;点击下一步&#xff08;不修改默认位置也是可以的 &#xff09;。 3、一直点击下一步…

ChatGPT搭建AI网站实战

1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型&#xff0c;它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人&#xff0c;ChatGPT有着广泛的应用场景&#xff0c;如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模…