2015-06-19 82 views
1

我正在使用服務帳戶和域範圍委派來訪問客戶域下的所有電子郵件帳戶,只讀範圍爲https://www.googleapis.com/auth/gmail.readonly在郵件get請求中,我使用格式選項「元數據」與fields ='有效內容/ headers',它只返回郵件頭,但不包含郵件的內容。Gmail API只讀元數據範圍

有沒有辦法限制我的應用程序訪問元數據而不是電子郵件的內容?這將確保我的應用程序無法讀取敏感的電子郵件內容信息並且只能訪問元數據。

謝謝!

回答

3

將您的範圍設置爲https://www.googleapis.com/auth/gmail.metadata。 見https://developers.google.com/gmail/api/auth/scopes

https://www.googleapis.com/auth/gmail.metadata
閱讀資源元數據包括標籤,歷史記錄和電子郵件消息頭,而不是在郵件正文或附件

+0

你是對的。看起來像@Eric團隊見http://stackoverflow.com/a/30945159/2827877已於2016年11月實施此功能https://developers.google.com/gmail/api/release-notes – igorsf

+1

是的,我們添加了一個元數據範圍,下面更新了我的答案。 –

5

Gmail API現在(截至2016年11月)確實支持gmail.metadata範圍! C.f. C.f. https://developers.google.com/gmail/api/auth/scopes

它允許訪問電子郵件標題,包括主題,沒有電子郵件數據。使用format = METADATA和format = MINIMAL調用message.get()將適用於該範圍,但不適用於format = FULL或format = RAW。

+0

API已經在文檔中定義元數據格式爲「只返回電子郵件ID,標籤和電子郵件標題「。 「主題」是標題的一部分。可以通過「q」messages.list搜索元數據而不是正文? – igorsf

+0

今天它不允許自由格式(「q」搜索),因爲默認情況下,它不僅搜索元數據。您仍然可以使用「labelIds」字段來執行基於標籤的搜索。 –

+0

@EricD鑑於最近在Gmail中保護用戶隱私的改進(例如域名所有者將應用程序白名單),我們試圖限制我們的應用程序使用gmail.metadata範圍。不幸的是,我們需要使用'q'參數執行messages.list調用,但是_only_在一段時間內訪問消息ID(使用後:)。我已經提交了一個功能請求,以允許在元數據範圍內對messages.list調用使用'q'參數,當'q'參數僅與元數據關聯時:https://issuetracker.google.com/issues/62062921。這是你們都會考慮實施的嗎? – tcdyl

0

通過指定'format'=>'metadata'和'metadataHeaders'=>數組(您希望接收的標題,不包括其他標題),您只能獲取指定的標題。在PHP檢查樣本GET請求如下:

$service->users_messages->get($userId, $message->id,array('format'=>'metadata', 'metadataHeaders'=>array('From','To'))); 

上面的代碼只會從和到標題和不會顯示Subject頭。

希望這會有所幫助。