ran*_*ils 10 ruby ruby-on-rails google-api google-oauth google-oauth2
我目前正在开发Google Api跨客户端授权的Web组件,如本文所述. https://developers.google.com/identity/protocols/CrossClientAuth
此外,我所处的环境是Rails,因此我使用的是google-api-client gem,如本文所述https://developers.google.com/identity/protocols/OAuth2WebServer#handlingtheresponse
授权代码通过Android应用程序使用Web客户端ID获取并传递到Web api以进行交换.我使用gem和代码进行交换如下
auth_client = Google::APIClient::ClientSecrets.load("/path/to/client_secrets.json").to_
authorization
auth_client.code = code
auth_client.fetch_access_token!
Run Code Online (Sandbox Code Playgroud)
我还试过了
auth_client = Google::APIClient::ClientSecrets.load("/path/to/client_secrets.json").to_
authorization
auth_client.update!(
:grant_type => 'authorization_code'
)
auth_client.code = code
auth_client.fetch_access_token!
Run Code Online (Sandbox Code Playgroud)
在任何情况下,我都会收到来自Google的无效授权错误,但没有说明.
我试图构建网址,以利用其他api工具,如卷曲和邮差,并绕过宝石,使用谷歌oauth游乐场,没有任何成功.
任何洞察可能产生无效授权错误的内容或如何生成curl请求以直接与geogle外部的google交换令牌将非常感激.
好吧,也许不是您正在寻找的解决方案,但我一直在应用程序的前端使用JavaScript 登录 API ,并通过参数将令牌传递到后端,该参数硬编码到 gem 请求中,如本例所示:
ga_view_ids = @service.list_account_summaries(options: {header: {authorization: "Bearer #{params[:access_token]}"}}).items
Run Code Online (Sandbox Code Playgroud)
希望它能帮助您走向正确的方向:)