Yed*_*nan 5 ruby ruby-on-rails google-api ruby-on-rails-5 google-oauth2
我有一个带Google登录功能的Android应用。根据文档,我生成了令牌ID:
// Configure Google Sign-In with the requestIdToken
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
// Handle result
private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
GoogleSignInAccount account = result.getSignInAccount();
String tokenId = account.getIdToken();
}
}
Run Code Online (Sandbox Code Playgroud)
我在Ruby on Rails的服务器端面临问题。我正在尝试使用google-id-token宝石。自述文件给出了以下示例:
validator = GoogleIDToken::Validator.new(expiry: 1800)
begin
payload = validator.check(token, required_audience, required_client_id)
email = payload['email']
rescue GoogleIDToken::ValidationError => e
report "Cannot validate: #{e}"
end
Run Code Online (Sandbox Code Playgroud)
我有token(来自android java代码)。什么required_audience啊 我应该使用相同client_id的客户端应用程序吗?当我尝试在服务器上运行代码时,得到的有效负载为nil。
另外,我想知道这是否是验证令牌ID的正确方法。
经过一番研究,我找到了自己问题的答案。他们是:
什么是required_audience?
它可以从解码的 JWT 字符串中获得。您可以按如下方式对其进行解码:
JWT.decode(token, nil, false)
Run Code Online (Sandbox Code Playgroud)
我应该使用与我的客户端应用程序相同的 client_id 吗?
是的。该required_audience和required_client_id应相同。否则验证失败
那为什么我得到的有效载荷为nil?
问题是,GitHub 中的gem和 RubyGems 中的gem是不同的。我通过将 Gemfile gem 指向 GitHub 解决了这个问题:
gem 'google-id-token', git: 'https://github.com/google/google-id-token.git'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
968 次 |
| 最近记录: |