Google API 用の Ruby クライアントを使用してクラウド ストレージにアクセスしようとしていますが、常に次のエラーが発生します。
/usr/local/lib/ruby/gems/1.9.1/gems/signet-0.4.5/lib/signet/oauth_2/client.rb:875:in `fetch_access_token': Authorization failed. Server message: (Signet::AuthorizationError)
{
"error" : "invalid_scope"
}
github と api クライアントの Google 開発者ページの両方で (わずかに異なる) 例をたどりましたが、結果は同じでした。両方のインスタンスのコードは次のとおりです。
require 'google/api_client'
apiClient = Google::APIClient.new({'application_name' => 'myApp'})
key = Google::APIClient::PKCS12.load_key('client.p12', 'notasecret')
client = "xxxxxxxxxxxx@developer.gserviceaccount.com"
api = "https://www.googleapis.com/auth/"
access = "devstorage.readonly"
service_account = Google::APIClient::JWTAsserter.new(client, api+access, key)
client.authorization = service_account.authorize
試しても同じエラーが発生します....
require 'google/api_client'
apiClient = Google::APIClient.new({'application_name' => 'myApp'})
key = Google::APIClient::KeyUtils.load_from_pkcs12('client.p12', 'notasecret')
client = "xxxxxxxxxxxx@developer.gserviceaccount.com"
api = "https://www.googleapis.com/auth/"
access = "devstorage.readonly"
apiClient.authorization = Signet::OAuth2::Client.new(
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
:audience => 'https://accounts.google.com/o/oauth2/token',
:scope => "#{api}#{access}",
:issuer => client,
:signing_key => key)
apiClient.authorization.fetch_access_token!
どちらの場合も、アクセス変数を「storage」、「devstorage」、「storage.readonly」、または「devstorage.readonly」に設定しようとしましたが、役に立ちませんでした。
何か案は?
ありがとう!