加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 访问Ruby上的Google Contacts API

发布时间:2020-12-17 02:47:36 所属栏目:百科 来源:网络整理
导读:我很难访问Google Contacts API. 首先我尝试了google-api-ruby-client gem,但事实证明它是does not support the Contacts API. 下一个镜头是google_contacts_api gem,但是我很难用oAuth2 gem获得oauth_access_token_for_user.当关注oAuth2 instructions时,我
我很难访问Google Contacts API.

首先我尝试了google-api-ruby-client gem,但事实证明它是does not support the Contacts API.

下一个镜头是google_contacts_api gem,但是我很难用oAuth2 gem获得oauth_access_token_for_user.当关注oAuth2 instructions时,我不知道在authorization_code_value和Basic some_password中放入什么.

我尝试了以下方法:

require 'oauth2'
client = OAuth2::Client.new(ENV['GOOGLE_CLIENT_ID'],ENV['GOOGLE_CLIENT_SECRET'],:site => 'http://localhost:9292')
=> #<OAuth2::Client:0x007fcf88938758 @id="blabla.apps.googleusercontent.com",@secret="blabla",@site="http://localhost:9292",@options={:authorize_url=>"/oauth/authorize",:token_url=>"/oauth/token",:token_method=>:post,:connection_opts=>{},:connection_build=>nil,:max_redirects=>5,:raise_errors=>true}>

client.auth_code.authorize_url(:redirect_uri => 'http://localhost:9292')
=> "http://localhost:9292/oauth/authorize?client_id=blabla.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A9292&response_type=code"

token = client.auth_code.get_token('authorization_code_value',:redirect_uri => 'http://localhost:9292',:headers => {'Authorization' => 'Basic some_password'})
=> Faraday::ConnectionFailed: Connection refused - connect(2) for "localhost" port 9292

如果有人能给我详细的逐步说明如何访问API,我将不胜感激.

解决方法

确保您的应用已正确设置并且您已在 Google Developers Console中启用了Contacts API.然后尝试以下操作:

CLIENT_ID = '?????.apps.googleusercontent.com'
CLIENT_SECRET = 'your_secret'
REDIRECT_URI = 'your_redirect_uri'
client = OAuth2::Client.new(CLIENT_ID,CLIENT_SECRET,site: 'https://accounts.google.com',token_url: '/o/oauth2/token',authorize_url: '/o/oauth2/auth')
url = client.auth_code.authorize_url(scope: "https://www.google.com/m8/feeds",redirect_uri: REDIRECT_URI)

在浏览器中访问网址并登录Google.之后重定向到的URL将在参数代码中包含令牌.它看起来像这样(下一行不是你运行的代码):

actual_redirect_url = "#{REDIRECT_URI}?code=#{code}"

然后解析重定向网址中的代码

token = client.auth_code.get_token(code,:redirect_uri => REDIRECT_URI)

编辑

有人在评论中询问如何将令牌传递给google_contacts_api库. (我写了图书馆,所以我应该知道!)

在此示例中,token是OAuth2 :: AccessToken对象.您所要做的就是将它传递给构造函数:

user = GoogleContactsApi::User.new(token)

为了更清楚,构造函数接受令牌对象,而不是字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读