将Google Plus与Rails集成

时间:2013-05-28 19:07:04

标签: ruby-on-rails-3.1 google-plus google-api-ruby-client

我已经使用我的应用程序登录(OAuth)部分,我现在要做的是下拉经过身份验证的用户的活动列表(例如状态订阅源)。

用户可以选择在经过身份验证之后将此列表拉下来,这是我的代码,到目前为止:

# User Model
  def gplus
    auth = authorizations.find_by_provider("gplus")
    client = Google::APIClient.new(application_name: "AppName", application_version: '1.0', authorization: nil)

    plus = client.discovered_api('plus', 'v1')

    result = client.execute(
      key: API["gplus"][Rails.env]["secret"],
      api_method: plus.people.get,
      parameters: { 'collection' => 'public', 'userId' => 'me'  }
    )

    return result.data
  end

这是我一直遇到的问题(来自rails控制台)

    #<Google::APIClient::Schema::Plus::V1::Person:0x3fe649ed04bc 
DATA:{"error"=>{"errors"=>[{"domain"=>"usageLimits", "reason"=>"keyInvalid", "message"=>"Bad Request"}], "code"=>400, "message"=>"Bad Request"}}>

我正在使用https://github.com/google/google-api-ruby-client ...为什么这不起作用的任何理由?

1 个答案:

答案 0 :(得分:2)

代码很接近,但不完全存在!

  1. 您正在获取auth对象,但实际上没有将其传递给您的客户端(您将其设置为nil)。
  2. 您似乎将客户端密钥作为API密钥传递,这将导致问题。它们的API密钥用于API控制台的“简单API访问”密钥 - 如果您使用的是oAuth 2.0令牌,则无需传递任何内容。如果您愿意,可以传递Server简单的API密钥。这实际上使用访问令牌错误地捕获了不同的项目,因此可以很方便,但不是必需的。
  3. 您无需为plus.people.get
  4. 指定集合参数

    此外,请确保在API控制台中的“服务”下启用了Google+ API:http://developers.google.com/+