1

我正嘗試使用Google Contacts API和Python/GDATA客戶端處理程序通過OAuth 2.0爲域中的用戶訪問聯繫人。我最終想創建一個Web服務來爲用戶添加聯繫人,但第一步是讓這個測試工作。Google Contacts API - 訪問其他用戶

我可以訪問我自己的聯繫人就好,如果我使用默認的URI。但是,當我傳遞電子郵件地址來爲其他用戶構建URI時,我似乎無法訪問其他用戶的聯繫人。以下是我正在使用的代碼:

client.GetContacts(uri=client.GetFeedUri(contact_list=userEmail)) 

執行此操作時會返回403錯誤。

gdata.client.RequestError: Server responded with: 403 

Your client does not have permission to get URL /m8/feeds/contacts/<userEmail>/full from this server. 

大部分只是試圖瞭解是否我在這裏嘗試甚至可能。例如,在電子郵件設置API中,您可以通過域的身份驗證並傳遞用戶的電子郵件以列出其標籤,添加過濾器等。因此,我預計Contacts API的工作原理相同,但處理方式稍有不同即修改URI,而不是僅僅將參數傳遞給客戶端處理程序。如果我在這種推定中錯了,請讓我知道。

對於授權,我使用flow_from_clientsecrets獲取詳細信息,然後獲取令牌以授權域名的ContactsClient。再次,我可以訪問我自己的聯繫人,因此授權似乎沒問題,但我無法訪問其他用戶的聯繫人。

client = token.authorize(ContactsClient(domain=domain)) 

好像我錯過了一些關於訪問其他用戶的內容。有人能幫助我克服這個麻煩嗎?下面是我查了一些事情/證實:

  • 聯繫人API爲
  • 作用域已被授權在控制面板中的客戶端ID的項目啓用>管理第三方接入
  • 我超級管理員在域中。

感謝您的時間!

回答

1

我從另一篇文章具有卓越的細節在這裏找到了答案:

Domain-Wide Access to Google GDATA APIs

你需要使用「服務帳戶」身份驗證。出於某種原因,我認爲這隻適用於更新的基於發現的API。但是,服務帳戶訪問也適用於GDATA API。我現在可以訪問域中用戶的所有聯繫人。