如要為應用程式設定 OAuth,您必須設定 OAuth 工作流程,並啟用 Data Portability API OAuth 範圍。
設定 OAuth 工作流程
如要為應用程式設定 OAuth 流程,請按照 Google Identity 說明文件中的基本步驟操作。
大多數開發人員會使用伺服器端網頁應用程式流程取得 OAuth 同意聲明,但您也可以使用 JavaScript 網頁應用程式流程或行動和電腦版應用程式流程。
匯出作業可能會超過存取權杖的有效期限,或者使用者可能會授予 30 或 180 天的存取權。您可能需要取得更新權杖,並定期兌換成新的存取權杖。詳情請參閱「重新整理網頁應用程式的存取權權杖」和「重新整理行動和電腦應用程式的存取權權杖」。
重要事項:只有在 OAuth 用戶端的發布狀態為「實際運作中」(而非「測試」) 時,使用者才能續發 OAuth 權杖。此外,即使您選取 30 天或 180 天的期限,授予 OAuth 用戶端的權杖測試發布狀態一律會在 7 天後到期。詳情請參閱「設定 OAuth 同意畫面」。
資料可攜權 API OAuth 範圍
為 Data Portability API 應用程式設定 OAuth 時,請啟用與應用程式相關的 Data Portability API OAuth 範圍。部分範圍是 sensitive
和 restricted
,須遵守其他規定。
將資料可攜權 API 範圍新增至 OAuth 流程時,使用者可能會對部分範圍表示同意,但不會對所有範圍表示同意。您的應用程式必須能夠透過以下方式處理這些情況:
- 允許匯出部分資料
- 通知使用者未選取所有必要的權限範圍 (並以優雅的方式失敗)
- 向使用者要求其餘同意聲明
此外,使用者可以選擇是否授予您一次性存取權,或是 30 天或 180 天的存取權。
- 如果使用者授予您一次性存取權,您的應用程式就能根據該特定同意聲明執行一次資料匯出作業。如要再次下載資料,您必須取得使用者的新同意聲明。
- 如果使用者授予您時間限制存取權,您的應用程式可以在指定時間內或使用者撤銷同意聲明前,執行資料匯出作業。
- 您也可以選擇在要求中套用時間篩選器,匯出特定時間範圍 (例如過去 6 個月) 的資料。
您也應注意,在 OAuth 流程中,應用程式不會知道哪個 Google 帳戶用於提供同意聲明。應用程式收到的 OAuth 權杖是不可讀取的。
如要瞭解使用者如何分享資料,請參閱「與第三方分享資料副本」。
範圍限制
本節將說明會導致錯誤的範圍限制。
混合範圍
資料移轉 API 範圍 (例如 https://www.googleapis.com/auth/dataportability.*) 的要求不得與其他範圍 (例如 https://www.googleapis.com/auth/userinfo.email) 混用。以下是錯誤要求的範例,其中受限制的部分已加粗顯示:
https://accounts.google.com/o/oauth2/v2/auth?
client_id=client_id&
redirect_uri=redirect_uri&
response_type=token&
scope=https://www.googleapis.com/auth/dataportability.myactivity.search+https://www.googleapis.com/auth/userinfo.email&
include_granted_scopes=false
先前授予的權限
請勿在要求 DPAPI 範圍時設定 include_granted_scopes=true
。以下是錯誤要求的範例,其中受限制的部分已加粗顯示:
https://accounts.google.com/o/oauth2/v2/auth?
client_id=client_id&
redirect_uri=redirect_uri&
response_type=token&
scope=https://www.googleapis.com/auth/dataportability.myactivity.search&
include_granted_scopes=true
範圍過多
如果要求附加的範圍過多,您可能會遇到 400 bad request
錯誤。當網址長度超過瀏覽器支援的長度時,就會發生這個錯誤。如要解決這個問題,請將範圍要求分割為多個較小的批次,並使用漸進式授權功能,針對每個批次要求同意聲明。
範圍類別
如需 Data Portability API 支援的所有 OAuth 範圍清單及其類別,請參閱「可用的 OAuth 範圍」。如需特定服務支援的所有資源群組和 OAuth 範圍清單,請參閱該服務的結構定義參考資料頁面。