私はこのオンラインでの回答を見つけることができませんでした.Googleログインボタンを使用する以外は、私はこの時点では使用したくありません。なぜなら、私がドンであればJavascriptに入りたくないからですそうしなければならない。Rails、OmniAuth、google_oauth2、google-api-client、Moments.insert ... 401 unauthorized ...なぜですか?
Ruby on Railsアプリケーション(ruby v1.9.3、rails v3.2.13)で、OmniAuthを接続してgoogle_oauth2 gemを使用してGoogle+と統合しています。
簡単な目標は、ユーザーがGoogle+で認証し、Google APIプロジェクトにアクセスできるようにしてからgoogle-api-client gemを使用してGoogle+ユーザーの金庫に瞬間を投稿できるようにすることです。
私は既にGoogle APIプロジェクトをセットアップし、Webアプリケーション用のOAuth 2.0を作成し、Google + APIサービスを有効にしました。
次のプロバイダーでOmniAuthをセットアップしました。私は投稿を許可するためにrequest_visible_actionsオプションを追加しました(これは正しいと思いますが、これは私がオンラインで見たコード例では使用されていません。 。):
provider :google_oauth2, CLIENT_ID, CLIENT_SECRET, {
access_type: 'offline',
scope: 'userinfo.email,userinfo.profile,plus.me,https://www.googleapis.com/auth/plus.login',
request_visible_actions: 'http://schemas.google.com/AddActivity',
redirect_uri: 'http://localhost/auth/google_oauth2/callback'
}
私は私のユーザーをリダイレクトする/認証/ google_oauth2、それは私のアプリを承認するには、Google +をユーザーに送信し、ユーザーが承認したときに、それは私がrequest.envにアクセスすることができ、私のコールバックに戻ります["omniauth.auth"]、トークン、電子メールアドレスなど、私が期待するすべての情報を持っています。私はauth ["credentials"] ["token"]からaccess_tokenを保存しています。
これまでのところ、とても良いですよね?
次のコードを使用して瞬間を投稿しようとすると、401の不正なエラーを示す例外が発生しました。
client = Google::APIClient.new
client.authorization.access_token = self.access_token
plus = client.discovered_api('plus', 'v1')
moment = {
:type => 'http://schemas.google.com/AddActivity',
:target => { :id => Time.now.to_i.to_s,
:description => message,
:name => message
}
}
# post a moment/activity to the vault/profile
req_opts = { :api_method => plus.moments.insert,
:parameters => { :collection => 'vault', :userId => 'me', },
:body_object => moment
}
response = client.execute!(req_opts).body
私も
credentials = Hash.new
credentials[:access_token] = self.access_token
credentials[:refresh_token] = self.refresh_token
credentials[:expires_at] = self.expires_at
client.authorization.update_token!(credentials)
しかし、運に
client.authorization.access_token = self.access_token
を交換しようとしています。
私は問題が関係しているのどちらかだと思い:
- OmniAuthは私が適切に
グーグル:: APIClientオブジェクトにトークンを設定しない
- http://blog.baugues.com/google-calendar-api-oauth2-and-ruby-on-rails
- https://developers.google.com/+/api/latest/moments/insert
任意のアイデアをいただければ幸いです!
私はこの同じ問題を抱えていますが、私はまだ運がありませんでした。 – cicloon