将消息发布到Google +时发送未配置错误

时间:2014-12-10 10:16:26

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

当用户使用google plus凭据登录我的应用程序时,我正在使用google-api-client gem向google plus发帖。

以下是我的代码。

 require 'google/api_client'
 require 'google/api_client/client_secrets'
 require 'google/api_client/auth/installed_app'
 keypath = Rails.root.join('config','poo-02a507f45ab4.p12').to_s
 key = Google::APIClient::KeyUtils.load_from_pkcs12(keypath, 'notasecret')


 client = Google::APIClient.new(
  :application_name => 'my app',
  :application_version => '1.0.0'
  )
urlshortener = client.discovered_api('urlshortener', 'v1')
client.authorization = Signet::OAuth2::Client.new(
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
:audience => 'https://accounts.google.com/o/oauth2/token',
:scope => ['https://www.googleapis.com/auth/prediction','https://www.googleapis.com/auth/plus.stream.write','https://www.googleapis.com/auth/plus.login','https://www.googleapis.com/auth/urlshortener','https://www.googleapis.com/auth/plus.circles.write'],
 :issuer => 'id@developer.gserviceaccount.com',
 :signing_key => key)
client.authorization.fetch_access_token!

 batch = Google::APIClient::BatchRequest.new do |result|
   puts result.data
end
batch.add(:api_method => urlshortener.url.insert,:body_object => { 'longUrl' => 'https://www.facebook.co.in' })
client.execute(batch)

尝试此代码时,会给出以下错误。

{\n \"domain\": \"usageLimits\",\n \"reason\": \"accessNotConfigured\",\n \"message\": \"Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration.\",\n

我已在开发者控制台中启用了Google + API和联系人API。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您遇到的问题是您使用的是service account

Google OAuth 2.0系统支持服务器到服务器之间的互动,例如网络应用程序和Google服务之间的互动。此方案称为服务帐户,该帐户属于您的应用程序而不是单个最终用户。您的应用程序代表服务帐户调用Google API,因此用户无法直接参与。

如果您想代表用户发帖,则需要使用Oauth2,然后您就可以对用户进行身份验证。

<强>更新

因此,您知道无法向用户发布Google+时间线。你能做的最好的事情就是发布一个名为moments的东西,它并不是真的一样。我们在2011年提出了一个问题请求,我认为他们尚未添加此功能。