Sai*_*Sai 5 google-api google-api-client google-plus
我想使用google ruby API客户端进行相当于例如此API资源管理器调用.
这应该是简单的:
require 'rubygems'
require 'google/api_client'
require 'httpadapter/adapters/net_http'
@client = Google::APIClient.new(
:key => MY_SIMPLE_API_SERVER_KEY,
:host => 'www.googleapis.com',
:http_adapter => HTTPAdapter::NetHTTPAdapter.new,
:pretty_print => false
)
@plus = @client.discovered_api('plus', 'v1')
status, headers, body = @client.execute(
@plus.people.list_by_activity,
'activityId' => 'z12nspyxxufislit423eex442zqpdtqnk',
'collection' => 'plusoners',
'maxResults' => '100',
'authenticated' => 'false'
)
public_activity = JSON.parse(body[0])
Run Code Online (Sandbox Code Playgroud)
但是,这个execute电话会导致ArgumentError: Missing access token.
我不希望登录用户; 我只想访问公共数据.我该怎么做呢?
我浏览了客户端代码并找到了几个选项。
首先,您可以创建一个 API 客户端,该客户端将在没有访问令牌的情况下发出所有请求。构造函数可能比指定默认值更激进一些。要解决此问题,您可以在创建客户端后取消身份验证方法。您的代码将如下所示:
require 'rubygems'
require 'google/api_client'
require 'httpadapter/adapters/net_http'
@client = Google::APIClient.new(
:key => 'SOME_KEY',
:host => 'www.googleapis.com',
:http_adapter => HTTPAdapter::NetHTTPAdapter.new,
:pretty_print => false
)
@client.authorization = nil
@plus = @client.discovered_api('plus', 'v1')
status, headers, body = @client.execute(
@plus.people.list_by_activity,
'activityId' => 'z12nspyxxufislit423eex442zqpdtqnk',
'collection' => 'plusoners',
'maxResults' => '100'
)
public_activity = JSON.parse(body[0])
Run Code Online (Sandbox Code Playgroud)
或者,您可以根据每个请求重写身份验证方法。你和这个人很接近!您有正确的选项,您只需将其作为最终参数传递即可,如下所示:
require 'rubygems'
require 'google/api_client'
require 'httpadapter/adapters/net_http'
@client = Google::APIClient.new(
:key => 'SOME_KEY',
:host => 'www.googleapis.com',
:http_adapter => HTTPAdapter::NetHTTPAdapter.new,
:pretty_print => false
)
@plus = @client.discovered_api('plus', 'v1')
status, headers, body = @client.execute(
@plus.people.list_by_activity,
{'activityId' => 'z12nspyxxufislit423eex442zqpdtqnk',
'collection' => 'plusoners',
'maxResults' => '100'}, '', [], {:authenticated => false}
)
puts status
puts body
public_activity = JSON.parse(body[0])
Run Code Online (Sandbox Code Playgroud)
感谢Allen在 Google+ 上让我注意到这一点:)
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |