我想与Google Plus取得联系。 我正在使用
gem "omniauth"
gem "omniauth-google-oauth2"
用于身份验证和
gem "google-api-client"
与谷歌apis通信。
到目前为止,身份验证工作正常,我在身份验证后获得了 access_token 。 现在的问题是我无法找到一种方法来获取我的圈子中的人员列表(我的Google Plus联系人)。
有没有办法做到这一点。
具体来说,我需要知道是否有任何宝石更像谷歌的“fb_graph”?
我发现了这个技巧
https://plus.google.com/u/0/_/socialgraph/lookup/visible/o=%5Bnull%2Cnull%2C%22_UID_%22%5D&rt=j
只需要输入“UID”即可获得圈子中的联系人,但只能使用他们的姓名和ID。但我需要更多信息......
工作流
client = Google::APIClient.new
client.authorization.client_id = GOOGLE_CONFIG[:app_id]
client.authorization.client_secret = GOOGLE_CONFIG[:app_secret]
client.authorization.access_token = token
plus = client.discovered_api('plus')
data = client.execute( plus.people.list, :collection => 'connected', :userId => 'me').data
在数据中,我收到此消息
<Google::APIClient::Schema::Plus::V1::PeopleFeed:0x6569248 DATA:{"error"=>{"errors"=>[{"domain"=>"global", "reason"=>"insufficientPermissions", "message"=>"Insufficient Permission"}], "code"=>403, "message"=>"Insufficient Permission"}}>
我发现了类似问题here,但仍需要找到解决方案。
答案 0 :(得分:3)
我需要在设计初始值设定项中添加范围,然后通过身份验证令牌,所有内容似乎都能正常运行。
scope: "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
或添加此行
config.omniauth :google_oauth2, GOOGLE_CONFIG[:app_id], GOOGLE_CONFIG[:app_secret],{ access_type: "offline", approval_prompt: "force", scope: 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile', name: 'google'}