マシンでSSL の問題に悩まされた後も、Google Ruby Client API を介してユーザーの Blogger アカウントにアクセスしようとしています。私は以下を使用しています:
- レール 3.2.3
- ルビー1.9.3
- oauth2 (0.8.0)
- オムニ認証 (1.1.1)
- omniauth-google-oauth2 (0.1.13)
- google-api-クライアント (0.4.6)
認証時に Google API を介してユーザーを正常に認証し、ブログにアクセスできます。ユーザーがログインすると、 Google から受け取った を保存access_tokenします。refresh_token有効期限が切れるまで、すべてがうまく機能しaccess_tokenます。refresh_tokenを新しいに交換する機能を構築しようとしていますが、access_token壁にぶつかり続けています。クライアントのドキュメントを例として使用すると、これは私が使用しているコードです。
client = Google::APIClient.new
token_pair = auth.oauth_token # access_token and refresh_token received during authentication
# Load the access token if it's available
if token_pair
client.authorization.update_token!(token_pair.to_hash)
end
# Update access token if expired
if client.authorization.refresh_token && client.authorization.expired?
client.authorization.fetch_access_token!
end
blogger = client.discovered_api('blogger', 'v3')
result = client.execute(
api_method: blogger.blogs.list_by_user,
parameters: {'userId' => "self", 'fields' => 'items(description,id,name,url)'},
headers: {'Content-Type' => 'application/json'})
が有効な間、このコードは完全に機能しaccess_tokenます。有効期限が切れるとすぐに、2 つの問題が発生します。
- トークンの有効期限が切れていることはわかっていますが(
expires_atデータベースで値を確認しました)、client.authorization.expired?戻りますfalse-データベースの値を使用する以外に、トークンの有効期限を確認できる別の方法はありますか? - の実行を強制すると
client.authorization.fetch_access_token!、invalid_requestエラーが発生します。
クライアント API を使用して をrefresh_token新しい に交換する方法を教えてください。access_token別の言語でそれを行う方法を知っていても、Rubyfy を試すことができるので、それは大きな助けになります。ありがとう!!