• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何从 Google YouTube Data API OAuth 2 iOS 获取刷新 token

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:48:28 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 OAuthSwift pod 进行 Google API 身份验证。在回调中,缺少刷新 token 。由于 Google 返回 500 服务器错误,当用户已通过身份验证后尝试请求新 token 时,我想存储刷新 token ,并在用户下次登录时授权,并检索新 token token 。

这是我的代码:

           let callback = "\(Bundle.main.bundleIdentifier ?? ""):/oauth2Callback"
            _ = ytOAuth2Swift?.authorize(
                withCallbackURL: URL(string: callback)!,
                scope: "https://www.googleapis.com/auth/youtube", state: state,
                success: { credential, response, parameters in

                   print("YouTube Access_Token \(credential.oauthToken)")
                    print("YouTube efreshR_Token \(credential.oauthRefreshToken)")
                },
                failure: { error in
                    print("ERROR: \(error.localizedDescription)")
            }
            )

这是我们得到的回复!

Response Parameters

根据 Google API 文档,这是应该进来的响应:

{
   "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
   "expires_in":3920,
   "token_type":"Bearer",
   "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

我尝试使用嵌入式 WebView 不走运:

[ mbedded WebView error messageE[2]



Best Answer-推荐答案


看起来 google API 一开始就给了你一次刷新 token ,而新的请求不再给它了。如果是,您应该知道 refresh_token 仅在第一次授权时提供,因此如果您授权多次,它可能不会再次返回 refresh_token。请尝试以下说明:

在它之后你的下一个调用也应该返回一个 refresh_token

可能有点不同,因为我的面板中没有使用英语。当我使用谷歌的 refresh_token 时,它永远不会过期,你可以永远使用它来创建新的 access_tokens。

另一种解决方案

如果它不起作用,请尝试在您的代码中将 access_type 设置为离线(我认为最简单的方法是在您的 API url 中添加一个 GET 参数作为 access_type=offline)。

必要的也可能是查询中的prompt=consent。它将强制用户授权,然后应该返回 refresh_token

更多信息请见 Google Documentation: Oauth2

提示

Google API 的好处是 refresh_token 永远不会过期,直到您不会撤销它或创建一个新的。因此,您甚至可以对其进行硬编码,并在每次想要获得新的 access_token 时使用。

关于ios - 如何从 Google YouTube Data API OAuth 2 iOS 获取刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624926/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap