1

過去幾天我嘗試訪問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" 

搜索互聯網在過去的一天,我的想法爲什麼這是不工作後。想法任何人?

+0

如果您調試連接,會顯示什麼?http://stackoverflow.com/questions/13900195/how-do-i-debug-http-of-google-api-client –

+0

@JayLee我將請求代碼更改爲使用Google :: APIClient。仍然得到相同的錯誤響應。按照您的建議添加了法拉第日誌。有任何想法嗎? – oldmanwiggins

回答

1

原來我錯過了'xoauth_requestor_id'字段。感謝sqrrrl回答我的問題github

+0

我剛剛切換到oauth2,並且我無法使用目錄API,除非我有從域的管理員獲得的訪問令牌。似乎是你的同樣的問題。我正在使用php庫。請對您所做的事情給予更多的關注。 @oldmanwiggins – yomexzo

相關問題