首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Ruby中使用OpenID访问Google通讯录

在Ruby中使用OpenID访问Google通讯录,可以通过以下步骤实现:

  1. 首先,确保你已经安装了Ruby开发环境。可以使用Ruby版本管理工具(如RVM或rbenv)来管理Ruby版本。
  2. 安装必要的Gem依赖。在命令行中运行以下命令来安装必要的Gem依赖:
代码语言:txt
复制

gem install openid_connect

gem install google-api-client

代码语言:txt
复制
  1. 创建一个新的Ruby文件,例如google_contacts.rb,并在文件中添加以下代码:
代码语言:ruby
复制

require 'openid_connect'

require 'google/apis/people_v1'

创建OpenID Connect客户端

client = OpenIDConnect::Client.new(

代码语言:txt
复制
 identifier: 'YOUR_CLIENT_ID',
代码语言:txt
复制
 secret: 'YOUR_CLIENT_SECRET',
代码语言:txt
复制
 redirect_uri: 'YOUR_REDIRECT_URI',
代码语言:txt
复制
 authorization_endpoint: 'https://accounts.google.com/o/oauth2/auth',
代码语言:txt
复制
 token_endpoint: 'https://accounts.google.com/o/oauth2/token',
代码语言:txt
复制
 userinfo_endpoint: 'https://www.googleapis.com/oauth2/v3/userinfo'

)

获取授权URL

auth_url = client.authorization_uri(

代码语言:txt
复制
 scope: Google::Apis::PeopleV1::AUTH_CONTACTS_READONLY,
代码语言:txt
复制
 response_type: :code

)

打印授权URL并引导用户访问

puts "请访问以下URL进行授权:\n#{auth_url}"

获取授权码

print '请输入授权码:'

auth_code = gets.chomp

通过授权码获取访问令牌

token = client.access_token!(

代码语言:txt
复制
 code: auth_code,
代码语言:txt
复制
 redirect_uri: 'YOUR_REDIRECT_URI'

)

创建Google People服务

service = Google::Apis::PeopleV1::PeopleServiceService.new

service.authorization = token

获取Google通讯录联系人

contacts = service.list_person_connections(

代码语言:txt
复制
 'people/me',
代码语言:txt
复制
 person_fields: 'names,emailAddresses'

)

打印联系人信息

contacts.connections.each do |contact|

代码语言:txt
复制
 name = contact.names.first.display_name
代码语言:txt
复制
 email = contact.email_addresses.first.value
代码语言:txt
复制
 puts "#{name}: #{email}"

end

代码语言:txt
复制
  1. 替换代码中的YOUR_CLIENT_IDYOUR_CLIENT_SECRETYOUR_REDIRECT_URI为你在Google开发者控制台创建的OAuth 2.0客户端的相关信息。确保重定向URI与你在控制台中配置的一致。
  2. 运行Ruby文件。在命令行中执行以下命令:
代码语言:txt
复制

ruby google_contacts.rb

代码语言:txt
复制
  1. 程序将打印授权URL,复制该URL并在浏览器中打开。用户将被要求授权访问其Google通讯录。
  2. 用户授权后,将获得一个授权码。将授权码输入到命令行中。
  3. 程序将使用授权码获取访问令牌,并使用令牌访问Google通讯录。联系人信息将被打印出来。

以上代码示例使用了openid_connectgoogle-api-client Gem来处理OpenID Connect和Google API的相关功能。通过OpenID Connect客户端获取授权码和访问令牌,然后使用Google API客户端访问Google通讯录服务。

请注意,以上代码示例仅用于演示目的,实际使用时需要根据具体需求进行适当的修改和错误处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

五分钟入门OAuth2.0与OIDC

举个例子:我在Github上有一个账号,现在我要访问其他网站leetcode.cn,但又不想在LeetCode上重新填入各种身份信息创建账号。那能否复用我在github.com上的一些信息数据?...(身份信息也属于资源,但是OAuth2.0没有对身份信息包含哪些内容以及认证过程做完整定义)举个例子:我有一个google账号,我会使用许多google系的应用,Gmail、Chrome等。...通过ODIC(可能是定制版本),我可以使用同一个google账号去登录这些google系应用(以及以google作为身份提供商的第三方应用)。...OP 使用 ID-Token(通常为访问令牌)进行响应。RP 可以使用访问令牌将请求发送到用户信息终结点。用户信息终结点返回有关最终用户的claim。...OIDC的核心在于授权过程,一并提供用户的身份认证信息ID-Token(使用JWT来包装)给到第三方客户端,OP通常还提供了GetUserInfo的接口,用于获取用户更完整的信息。

3.4K40

六种Web身份验证方法比较和Flask示例代码

在此处阅读有关CSRF以及如何在Flask预防CSRF的更多信息。...它们用于实现社交登录,这是一种单点登录(SSO)形式,使用来自社交网络服务(Facebook,Twitter或Google)的现有信息登录到第三方网站,而不是专门为该网站创建新的登录帐户。...此方法通常与基于会话的身份验证结合使用。 流程 您访问的网站需要您登录。您导航到登录页面,并看到一个名为“使用Google登录”的按钮。您点击该按钮,它会将您带到Google登录页面。...网站如何访问您的 Google 云端硬盘?这就是OAuth发挥作用的地方。您可以授予访问其他网站上的资源的权限。在这种情况下,请以写入权限访问 Google 云端硬盘。 优点 提高了安全性。...Connect 的图解指南 OAuth 2.0 和 OpenID Connect 简介 使用谷歌登录创建一个烧瓶应用程序 Django-allauth Tutorial FastAPI — Google

7.4K40
  • Google 发布 Google Friend Connect API

    今天 Google 更是开放了 Google Friend Connect 的 API,让你能够访问到更多 Google Friend Connect 核心的数据和功能。...Google Friend Connect 提供两种 API,JavaScript API 允许你能够直接集成社会化社区到你的网页。...Google Friend Connect 已经给主流 CMS 系统 Dupal,PHPBB,WordPress 制作了插件, WordPress 的插件,他就能允许用户通过 Google Friend...Connect 实现 OpenID, OAuth, 和 OpenSocial 三种方式登陆你的博客,直接留言,并且使用 Google Friend Connect 的头像。...等互联网上很多网站都使用 Google Friend Connect 加强本站的社会化,那么 Google 在推出一个更大社交网络,也是水到渠成的事情,那么 Google 又会再一次成为互联网的中心。

    63710

    Google 是如何设计 Ruby Serverless Runtime 的?

    作者:Daniel Azuma(Google) 译者:donghui 2021年1月旬,Google 宣布了 Cloud Functions 的 Ruby 运行时公测。...在坚持我们社区所熟悉的 Ruby 习惯、实践和工具的同时,我们还必须重新思考如何在几乎每个层次上进行 web 应用程序开发,从代码到依赖、持久化、测试等等。...这就是为什么这种“顶级”方法在简单的单文件 Ruby 脚本和 Rakefiles 很常见,但在大型 Ruby 应用程序不推荐使用。...同样,我们可以使用更传统的习惯用法, Ruby 全局变量,甚至构造函数和实例变量,将信息从启动代码传递给函数调用方。然而,这些语法可能传递了错误的东西。...现在大多数 Ruby 应用程序都在使用 Bundler,而且很少有替代方案,很少有广泛使用的。但我们实际上更进一步,将 Bundler 深入到我们的基础架构,要求应用程序使用它来处理云函数。

    2.2K60

    手机号定位最简单的几种方法

    授予必要的权限,位置和通知访问权限。 现在,该应用程序将记录位置数据,并可在仪表板上查看。 从任何能连接互联网的设备上打开仪表板上的应用程序,选择目标人物,即可在地图上查看其位置历史记录。...这些应用程序要求访问您的手机通讯录,并声称可以使用电话号码监控位置。 它们一般是这样工作的: 下载应用程序并授予联系人访问权限。 输入要查询的电话号码。应用程序会搜索在线和电话数据库。...此外,允许应用程序访问您的通讯录还存在巨大的隐私问题。付费并不能保证信息的准确性或及时性。请谨慎使用此类声称可以追踪电话号码的定位应用程序。...因此,您可以随时从个人控制面板访问位置数据。 如何在他人不知情的情况下追踪其位置? 如果您想在某人不知情的情况下跟踪其位置,您有几种选择。...在个人使用方面,它可以让父母放心地跟踪子女的行踪,或让伴侣放心地确保爱人的安全。在专业环境,跟踪员工的位置有助于提高生产力和效率,尤其是在实地工作或送货的情况下。 跟踪某人的位置是否合法?

    2.2K10

    Rails 3 Script 改版

    1.环境 # ruby -v ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] # rails -v Rails 3.0.7 gem...(2.1.8) ruby-openid-apps-discovery(1.2.0) 红宝石(0.1.1) rubyzip(0.9.4) selenium-webdriver(0.2.0) sqlite3...启动Rails控制台(快捷别名: “ c”) 服务器启动Rails服务器(快捷别名: “ s”) DBCONSOLE启动控制台 对 数据库中指定 的 配置/ database.yml.../my_app” 除了这些,还有: 应用程序生成Rails应用程序代码 销毁使用 “生成”生成的撤消代码 基准测试器查看一段代码的运行速度 profiler 从 一段代码...获取配置文件信息 插件安装插件 运行程序在 应用程序环境 运行一段代码 可以使用 -h 运行所有命令 以获取 更多信息。

    7.1K20

    【壹刊】Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API (上)

    二,正文 上一篇介绍到 Azure AD 其实是微软基于云的表示和授权访问管理服务,它可以帮助我们在Azure登录和访问资源。...和 OAuth 的区别 (以下的介绍来自google和 OAuth官网)   1,OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散性。...三,结尾 今天的文章大概介绍了如果在我们的项目中集成Azure AD,以及如果在 Swagger中使用隐士授权模式来访问Api资源, 今天,就先分享到这里,上面演示的是如果在Swagger中使用隐式访问模式访问受保护的资源...,下一篇继续介绍如何使用其他类型的授权访问模式来访问由Azure AD受保护的API资源。...代码稍等,我会整理一下,上传到github 作者:Allen 版权:转载请在文章明显位置注明作者及出处。发现错误,欢迎批评指正。

    1.9K40

    IdentityServer4 知多少

    允许用户授权第三方移动应用访问他们存储在其他服务商上存储的私密的资源(照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。...OAuth允许用户提供一个令牌而不是用户名和密码来访问他们存放在特定服务商上的数据。每一个令牌授权一个特定的网站内访问特定的资源(例如仅仅是某一相册的视频)。...Web、移动、JavaScript在内的所有客户端类型去请求和接收终端用户信息和身份认证会话信息;它是可扩展的协议,允许你使用某些可选功能,身份数据加密、OpenID提供商发现、会话管理等。...比如,Facebook、Google、QQ、微博都是比较知名的OpenId Connect提供商。 3....如果针对控制台客户端应用,三步走就可以访问Api: 使用DiscoverClient发现Token Endpoint 使用TokenClient请求Access Token 使用HttpClient访问

    3K20

    深度解读-如何用keycloak管理external auth

    setup Sign in with Google using Keycloak[3] 如下图,一般授权流程(standard flow)客户端和auth server主要是两个阶段 生成auth...application client credentials, 会有相应权限和客户端限制,web application类型会有访问地址origin及callback地址的白名单限制 ClientId...get_tokens // 校验请求,state及pkce, 这里省略展示 // code 换取token let mut res = client.exchange_code(code); // 请求发送,axum不能使用...http://localhost:8000/google/auth来尝试上述flow 使用 keycloak IDP keycloak 配置 上边流程怎么让 keycloak 这个身份和访问管理系统接管呢...它简化了应用程序的身份管理和访问控制,提供了一致的用户登录体验,并提高了应用程序的安全性。

    62730

    钉钉一键登录(web端)

    流程图: 图片 文档: 获取微应用免登授权码文档:获取微应用免登授权码 - 钉钉开放平台 获取微应用免登授权码接口:API Explorer 获取登录用户的访问凭证:获取登录用户的访问凭证 - 钉钉开放平台...获取用户通讯录个人信息文档:获取用户通讯录个人信息 - 钉钉开放平台 获取用户通讯录个人信息接口:API Explorer 第三方企业应用免登:第三方企业应用免登 - 钉钉开放平台 查看用户详情:...首先是进入钉钉的访问凭证,也就是咱们的授权页面,这个是钉钉已经集成好的,咱们只需要更改一下配置就好了。 https://login.dingtalk.com/oauth2/auth?...redirect_uri=https%3A%2F%2Fwww.aaaaa.com%2Fa%2Fb &response_type=code &client_id=dingbbbbbbb &scope=openid...如何控制呢,咱们接口返回值使用String 然后使用redirect:重定向咱们需要的页面就可以了。登录失败就可以重定向账号密码页面,登录成功就可以返回咱们的首页或者自定义的页面。

    2.1K40

    探讨DNS解析流程

    DNS 服务器 在现实世界,当您进行阅览新闻、在线下单、下载文件或观看直播时,您需要通过访问域名来访问目标网站,例如 youtube.com、google.com 等。...DNS 解析过程如下:(这里以访问 google.com 为例) 客户端会发出 DNS 请求,询问 google.com 的 IP 是什么,它会先在浏览器缓存查找 google.com 的 IP 地址...例如,如何在访问它的多个应用程序之间进行负载均衡?只需将其配置为域名即可。在域名解析,我们只需要配置策略,这次返回第一个 IP,下次返回第二个 IP,就可以实现负载均衡了。...在 metaleap.com 的 DNS 服务器,一般通过配置 CNAME,给 app.metaleap.com 起一个别名, app.vip.metaleap.com,然后告诉本地 DNS 服务器去请求...结论 DNS 是网络世界的通讯录,可以通过域名搜索地址,因为域名服务器是按树状结构组织的,所以域名搜索采用递归的方式,通过缓存来提升性能。

    20.3K20

    iOS和Android比特币开发3个最受欢迎的应用SDK(示例)

    区块链钱包 Blockchain Wallet API KEY:完全访问此服务的所有功能,创建钱包,付款,发送交易,地址管理等。 要接收任何密钥,必须从BC请求API。...这个过程应该排除不同的欺诈方式或使用密钥用于不公平的目的。因此,在请求,你还应该描述你将使用区块链服务的内容。API密钥的请求通常在2-3个工作日内被接受或拒绝。...该应用程序适用于测试网络TestNet3并包含多个功能: 创建一个钱包 查看余额 接收和发送交易 免费测试比特币 生成你的钱包地址QR码 扫描收件人的钱包地址QR码 该示例使用一些其他的库,Android...官方Coinbase库包括Java,Ruby,Python,Node.js和PHP。 此SDK使用户无需注册即可获取有关比特币当前汇率(及其变更历史)或其他货币的信息。...Coinbase中使用两种方法进行身份验证: API KEY。可以在网站上的API设置创建和激活。在这种情况下,你只能访问自己的帐户或商家订单; 使用OAuth令牌重定向到官方网站。

    3.2K30

    探讨 DNS 解析

    DNS 服务器 在现实世界,当您进行阅览新闻、在线下单、下载文件或观看直播时,您需要通过访问域名来访问目标网站,例如 youtube.com、google.com 等。...DNS 解析过程如下:(这里以访问 google.com 为例) 客户端会发出 DNS 请求,询问 google.com 的 IP 是什么,它会先在浏览器缓存查找 google.com 的 IP 地址...例如,如何在访问它的多个应用程序之间进行负载均衡?只需将其配置为域名即可。在域名解析,我们只需要配置策略,这次返回第一个 IP,下次返回第二个 IP,就可以实现负载均衡了。...当客户端要访问 app.metaleap.com 时,需要将域名转换为 IP 地址才能访问,所以需要请求本地 DNS 解析器。 本地 DNS 解析器首先检查本地缓存是否有此记录。如果有,直接使用。...在 metaleap.com 的 DNS 服务器,一般通过配置 CNAME,给 app.metaleap.com 起一个别名, app.vip.metaleap.com,然后告诉本地 DNS 服务器去请求

    34K20

    如何使用Ruby 多线程爬取数据

    今天在这里我们主要说说ruby。我觉得ruby也是ok的,我试试看写了一个爬虫的小程序,并作出相应的解析。Ruby实现网页抓取,一般用的是mechanize,使用非常简单。.../')Ruby 多线程爬虫是一种使用 Ruby 编程语言构建的网络爬虫,是指使用多个线程同时爬取和处理多个页面。...要在 Ruby 创建多线程爬虫,首先就需要要为抓取的每个页面创建一个新线程,然后使用该线程处理该页面并从中提取任何相关信息。...下面是一个简单的示例,说明如何在 Ruby 实现多线程爬虫,我们选择访问的目标网站为 www.taobao.com ,关于淘宝的爬取大家都知道是比较难的,网站的反爬很严,需要多方面的进行研究才能更好的爬取数据...,但是今天只是一个简单的ruby多线程爬虫分享,所以在爬取过程只添加了代理IP一个反爬策略,能更只观的带大家了解IP在爬虫,特别是在反爬很严的网站的重要作用。

    21240

    聊天、会议、多媒体一体化:多平台支持的即时通讯系统 | 开源日报 No.44

    通过使用最新技术和工具, Next.js、React Server Components 等,在保证性能和用户体验同时提高开发效率。...支持 WASM,在浏览器运行模型。 提供模型训练功能,并支持使用 NCCL 进行分布式计算。 内置多个常见模型:Llama,Whisper,Falcon,StarCoder 等。...可通过负载均衡方式访问不同渠道,并支持流式传输实现打字机效果。 支持多机部署,在令牌管理设置过期时间和额度,并且可以进行兑换码管理批量生成与导出充值功能。...它使用行业标准的 OAuth2 和 OpenID Connect,支持获取安全令牌来访问受保护的 API,并且还提供了对 Azure AD B2C 的支持。...官方文档齐备:详细介绍了如何在不同平台上使用 MSAL.NET 进行快速入门,并提供相关示例代码进行参考。

    76030

    关于OIDC,一种现代身份验证协议

    OpenID Connect (OIDC) 和 OAuth2.0 是两个密切相关但功能定位不同的协议,它们在现代网络应用的认证和授权体系扮演着关键角色。...OIDC 内置了更强的安全措施,比如使用 JWT 和加密技术来保护 ID Token,确保了身份信息在传输过程的安全性和完整性。...应用场景 OAuth 2.0 常见于第三方应用需要访问用户数据的场景,社交媒体登录、云服务API访问等。 OIDC 更适用于需要确认用户真实身份的服务,企业应用的单点登录、金融服务的身份验证等。...授权码(Authorization Code):在 OAuth 2.0 流程,IdP 向 RP 发送的一个临时代码,RP 使用该代码交换访问令牌。...社交媒体登录:许多网站和应用允许用户使用 Google、Facebook 等社交账户登录,背后即是 OIDC 在发挥作用。

    3.1K10

    FastAPI(57)- 安全相关的概念

    HTTPS OpenID Connect OpenID Connect 是另一个规范,基于 OAuth2 它只是扩展了 OAuth2,指定了 OAuth2 相对模糊的一些内容,以尝试使其更具互操作性...例如,Google 登录使用 OpenID Connect(其底层使用 OAuth2) 但是 Facebook 登录不支持 OpenID Connect,它有自己的 OAuth2 风格 OpenID...(not "OpenID Connect") 还有一个“OpenID”规范,它试图解决与 OpenID Connect 相同的问题,但不是基于 OAuth2 所以,这是一个完整的附加系统 但它现在不是很流行或使用...Google、Facebook、Twitter、GitHub 等) implicit clientCredentials authorizationCode 但是有一个特定的“流程”可以完美地用于直接在同一应用程序处理身份验证...password openIdConnect 有一种方法可以定义如何自动发现 OAuth2 身份验证数据 这种自动发现是 OpenID Connect 规范定义的

    91610

    Keycloak vs MaxKey,开源单点登录框架如何选择?

    具体参考: https://ldap.com/ CAS CAS 是由耶鲁大学实验室 2002 年出的一个开源的统一认证服务的标准协议,也是很多企业内部系统登录所使用的标准协议,阿里巴巴等。...因此在大部分的用户系统,都会有 SAML 协议的支持。不过国内使用的还是偏少,OIDC 的出现抢了它的风头。...还是刚才说的,内部系统很多都在使用其二次开发或扩展的 CAS,阿里巴巴。 部署支持 Docker、原生 war。...但其因为过于强大而专一,导致我们平时很需要的额外功能反倒不支持,想把 CAS 作为生产环境使用将会有很大的工作量。而且文档也并不是很详细。接入 CAS 需要其支持客户端语言, PHP-CAS 等。...标准协议 序号 协议 支持 1.1 OAuth 2.x/OpenID Connect 高 1.2 SAML 2.0 高 1.3 JWT 高 1.4 CAS 高 1.5 FormBased 1.6 TokenBased

    5.1K51

    针对近期“博全球眼球的OAuth漏洞”的分析与防范建议

    这可导致攻击者创建一个使用真实站点地址的弹出式登录窗口——而不是使用一个假的域名——以引诱上网者输入他们的个人信息。...鉴于OAuth和OpenID被广泛用于各大公司——微软、Facebook、Google、以及LinkedIn——Wang表示他已经向这些公司已经了汇报。...至于Google,预计该公司会追踪OpenID的问题;而LinkedIn则声称它将很快在博客说明这一问题。...授权验证参数的不正确使用 部分第三方应用在授权过程采用state里包含access token接收的回调URL,但是因为OAuth提供方只对回调URL,即参数redirect_uri的值进行校验,就可以导致黑客可以随意构造回调的...URL跳转 黑客可以利用该问题构造相关的钓鱼页面,诱使用访问从而造成用户的帐号被窃取等相关损失等。 3.2.2.

    975100
    领券