過去幾天我嘗試訪問Ruby中的Google Directory API,但無法使其工作。據this文件目錄API可以使用2LO授權:使用2lo從Marketplace應用程序訪問Google Directory API
如果你的應用有某些特殊授權要求,如在同一時間要求的數據訪問(混合)或權威的域範圍內的代表團登錄(2LO),那麼您目前不能使用OAuth 2.0令牌。在這種情況下,您必須使用OAuth 1.0令牌和API密鑰。您可以在API訪問面板的簡單API訪問部分的Google API控制檯中找到您的應用程序的API密鑰。
我目前有工作代碼,可以使用2lo訪問Provisioning API。從文檔中可以看出,我可以使用相同的代碼訪問Directory API,只需向請求添加API訪問密鑰參數並啓用一些權限即可。然而,它不工作,我不知道爲什麼。
這裏是請求代碼:
def self.get_user2(email)
@client = Google::APIClient.new(:authorization => :two_legged_oauth_1)
@client.authorization.client_credential_key = GOOGLE_APP_KEY
@client.authorization.client_credential_secret = GOOGLE_APP_SECRET
@directory = @client.discovered_api('admin', 'directory_v1')
result = @client.execute(
@directory.users.get,
'userKey' => email,
:key => GOOGLE_API_KEY
)
JSON.parse(result.body)
end
這讓我的迴應:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}
我已經添加了所需的範圍,我的清單文件,
<Scope id="usersAPI">
<Url>https://www.googleapis.com/auth/admin.directory.user.readonly</Url>
<Reason>See all users in your company.</Reason>
</Scope>
和還在API控制檯中爲我的項目啓用了Admin SDK。
以下是添加Faraday.default_connection.response :logger
我development.rb文件後,在日誌輸出:
get https://www.googleapis.com/admin/directory/v1/users/[email protected]?key=AIzaSyAHYBWlC_qiihRtTKTZleZlAw2ts8Q1WO8
User-Agent: "google-api-ruby-client/0.6.4 Mac OS X/10.8.4"
Authorization: "OAuth oauth_consumer_key=\"76548528623.apps.googleusercontent.com\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1375899810\", oauth_nonce=\"de4d976eed6883a06b3f6084e3dd0db4\", oauth_version=\"1.0\", oauth_signature=\"3D7aqhBeaCYOYyaF8bWpaM9MA8U%3D\""
Cache-Control: "no-store"
Content-Type: "application/x-www-form-urlencoded"
401
www-authenticate: "AuthSub realm=\"https://www.google.com/accounts/AuthSubRequest\""
content-type: "application/json; charset=UTF-8"
date: "Wed, 07 Aug 2013 18:23:30 GMT"
expires: "Wed, 07 Aug 2013 18:23:30 GMT"
cache-control: "private, max-age=0"
x-content-type-options: "nosniff"
x-frame-options: "SAMEORIGIN"
x-xss-protection: "1; mode=block"
server: "GSE"
connection: "close"
搜索互聯網在過去的一天,我的想法爲什麼這是不工作後。想法任何人?
如果您調試連接,會顯示什麼?http://stackoverflow.com/questions/13900195/how-do-i-debug-http-of-google-api-client –
@JayLee我將請求代碼更改爲使用Google :: APIClient。仍然得到相同的錯誤響應。按照您的建議添加了法拉第日誌。有任何想法嗎? – oldmanwiggins