Google今天关闭了API,可以使用哪种替代方式进行身份验证?

时间:2019-03-07 11:43:46

标签: ruby-on-rails ruby ruby-on-rails-4 omniauth omniauth-google-oauth2

我正在使用rails-4,并且已经在我的应用中使用OAuth-2Google+ API进行身份验证,为此使用了以下宝石:

  1. omniauth-oauth2
  2. omniauth-google-oauth2

我已经收到以下以下电子邮件通知:

  

2019年3月7日,所有Google+ API和Google+登录将关闭   完全。这将是逐步关闭,并开始API调用   最早在2019年1月28日间歇性地失败,并且Google+范围的OAuth请求>最早在2019年2月15日开始间歇性地失败。

今天,我无法进行身份验证,因为在API收到以下代码后,我得到了nil的{​​{1}}:

request.env["omniauth.auth"]

请提出如何解决此问题的建议,或提供替代方法。

1 个答案:

答案 0 :(得分:3)

最后,我以某种方式设法通过为用户信息提供备用OpenIdConnect端点来解决了该问题。我使用source替换了:

https://www.googleapis.com/plus/v1/people/me/openIdConnect

具有:

https://www.googleapis.com/oauth2/v3/userinfo

我用以下方法修补了omniauth-google-oauth2

config / initializers / omniauth_google_oauth2_patch.rb

class OmniAuth::Strategies::GoogleOauth2 < OmniAuth::Strategies::OAuth2
  def raw_info
    @raw_info ||= access_token.get('https://www.googleapis.com/oauth2/v3/userinfo').parsed
  end
end

现在运行良好。