gpt4 book ai didi

ios - 将 OAUTH2 token 从 iOS 传递到 Rails

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:45 25 4
gpt4 key购买 nike

我有一个 Rails 网站,该网站已实现并运行 Google OAUTH2。

我们正在开发一个 iOS 应用程序,它将使用 API 与我的网络服务器通信。一些 API 需要对用户进行身份验证。这个想法是,iOS 应用程序在设备上使用 OAUTH2 对用户进行身份验证,然后通过 SSL 从设备向网络发布 token 作为身份验证。我需要网站来验证 token 。

在 Google API 控制台中,我为 iPhone 设备添加了客户端 ID,并通过以下方式获得了访问 token :

https://accounts.google.com/o/oauth2/auth?
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&
redirect_uri=urn:ietf:wg:oauth:2.0:oob&
response_type=code&
client_id={my client id}

然后,我将 token 传递到我的站点。在我的网站上,我通过以下方式验证 token :

google = OmniAuth::Strategies::GoogleOauth2.new(ENV['GOOGLE_API_KEY'],['GOOGLE_CLIENT_API_SECRET'])
client = OAuth2::Client.new(ENV['GOOGLE_API_KEY'],['GOOGLE_CLIENT_API_SECRET'], google.options.client_options)
access_token = OAuth2::AccessToken.new(client, params[:token], google.options.access_token_options || {})
google.access_token = access_token
google.auth_hash

当我尝试 auth_hash 时,返回以下错误:

 {
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}

从这里开始,我不知道为什么我指定了无效的凭据。

ENV['GOOGLE_API_KEY'] 指向与网站相同的 API key ,ENV['GOOGLE_CLIENT_API_SECRET'] 指向 iOS 客户端的 key 。

最佳答案

我认为我在上面使用的 URL 给了我一个访问 token 。实际上,它向我返回了一个授权码(然后可用于获取访问 token )。

解决方案是将授权码换成访问 token ,然后我可以传递 token 并使用它。

授权代码访问 token 之间的区别在 Google 站点上有些模糊,但您可以在此处阅读有关如何交换它们的信息: https://developers.google.com/accounts/docs/OAuth2WebServer

关于ios - 将 OAUTH2 token 从 iOS 传递到 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11770995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com