Ruby on rails 3.2 Google plus在流媒体上插入活动

Ruby on rails 3.2 Google plus在流媒体上插入活动,ruby-on-rails-3.2,google-api,google-plus,ruby-2.0,google-api-ruby-client,Ruby On Rails 3.2,Google Api,Google Plus,Ruby 2.0,Google Api Ruby Client,在google plus stream中插入活动非常困难。转介后。 我找到了一个java的例子- 是否有类似的示例可以使用执行activites.insert查询 我遵循以下步骤: 通过定义对应用程序的访问权限 使用令牌和刷新令牌执行api调用。我可以使用“plus”列出活动,但要插入活动,我应该使用plusDomains client = Google::APIClient.new(:application_name =>'Demo GooglePlus',:application_ve

在google plus stream中插入活动非常困难。转介后。 我找到了一个java的例子-

是否有类似的示例可以使用执行
activites.insert
查询

我遵循以下步骤:

通过定义对应用程序的访问权限

使用令牌和刷新令牌执行api调用。我可以使用“plus”列出活动,但要插入活动,我应该使用plusDomains

client = Google::APIClient.new(:application_name =>'Demo GooglePlus',:application_version => '1.0.0')

plus = client.discovered_api('plus')

plusd = client.discovered_api('plusDomain')

client_secrets = Google::APIClient::ClientSecrets.load 

auth=client_secrets.to_authorization

auth.update_token!(access_token: 'aRandomToken', refresh_token: 'aRandomRefreshToken')

result = client.execute(:api_method => plus.activities.list,:parameters => {'collection' => 'public', 'userId' => 'me'}, :authorization => auth)
>> This works, returns the list of activities
使用plus域

result = client.execute(:api_method => plusd.activities.insert,:parameters => {'collection' => 'public', 'userId' => 'me'}, :authorization => auth)
>> Returns 403 Forbidden
后来我意识到GoogleAPI需要域范围的delegaton来使用域api(我认为这是正确的?)

-上述步骤1中使用的oauth是否足够

-RUBY中有什么可用的吗

我还尝试了服务帐户设置,创建了一个商业应用程序,并遵循

但仍然不是运气

在终端上试用

curl -v -H "Content-Type: application/json" -H "Authorization: OAuth ya12.AqwqwwAS1212grcECQ3iVAlg" -d "{'object':{'content':'Test message'},'access':{'items':[{'type' : 'domain'}],'domainRestricted':true}}" -X POST https://www.googleapis.com/plus/v1domains/people/me/activities

Results in ->
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "forbidden",
    "message": "Forbidden"
   }
  ],
  "code": 403,
  "message": "Forbidden"
 }
}
在google plus用户steam上插入活动时,我可以得到一些帮助吗


谢谢

首先要验证两件事:

  • 您正在使用Google应用程序域。此API不适用于普通Google+用户
  • 您在创建客户端ID的Google API控制台中启用了Google+域API。很容易错过Google+域API,而意外启用了Google+API
  • 您的Google应用程序域必须由管理员启用Google+
  • 您通过或代表的用户创建了Google+个人资料
  • 下一步: 您不能在域API中使用
    plus.login
    范围。我相信您还需要删除userinfo.*范围。看

    此外,我认为您的作用域定义不正确,我认为它们需要使用完整的URI:

    google_scope = "https://www.googleapis.com/auth/plus.me,
                    https://www.googleapis.com/auth/plus.media.upload,
                    https://www.googleapis.com/auth/plus.profiles.read,
                    https://www.googleapis.com/auth/plus.stream.read,
                    https://www.googleapis.com/auth/plus.stream.write,
                    https://www.googleapis.com/auth/plus.circles.read,
                    https://www.googleapis.com/auth/plus.circles.write"
    

    谢谢@BrettJ。我最终意识到了范围错误。但我实际上是在尝试使用常规的G+帐户插入活动。我在这里创建了一个应用程序域帐户,效果非常好。我想我无法使用ruby client for google api写入常规G+用户流。或者有?不,你不能为一个普通的Google+帐户写入流。我们不希望由此产生应用程序垃圾邮件,但对于您所在领域的用户,请做您想做的。@BrettJ有一个名为hootsuite的应用程序,他们要求离线访问,他们可以直接发布到页面,他们是否与google或其他什么有任何合作关系?@BrettJ您能检查一下这个吗,它将帮助我提前感谢
    google_scope = "https://www.googleapis.com/auth/plus.me,
                    https://www.googleapis.com/auth/plus.media.upload,
                    https://www.googleapis.com/auth/plus.profiles.read,
                    https://www.googleapis.com/auth/plus.stream.read,
                    https://www.googleapis.com/auth/plus.stream.write,
                    https://www.googleapis.com/auth/plus.circles.read,
                    https://www.googleapis.com/auth/plus.circles.write"