マシンで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 を試すことができるので、それは大きな助けになります。ありがとう!!