共用方式為


要求使用者同意

重要事項

在 2022 年 6 月,我們引進了 多重要素驗證 作為 Bing 廣告的需求。 您可能仍然需要變更程序代碼,才能符合這項需求。 Microsoft Advertising 會在 10 月初執行技術強制檢查。

此部落格文章 概述您應該採取以確保合規性的步驟。

如需詳細資訊,請參閱 多重要素驗證需求 指南。

註冊應用程式之後,您必須取得使用者同意,才能管理其Microsoft Advertising 帳戶。

提示

如需疑難解答說明,請參閱 常見的 OAuth 錯誤 指南。

重要事項

每個使用者都必須收到提示,並透過網頁瀏覽器控件至少提供一次同意,您的應用程式才能管理其Microsoft Advertising 帳戶。 這是標準 OAuth 2.0 流程,並已在 OAuth 2.0 規格的授權碼授與一節中詳細定義。

授權碼流程會從客戶端將用戶 /authorize 導向端點開始。 在此要求中,用戶端會指出它需要向使用者取得的許可權:

注意事項

將以下 your_client_id 取代為 Azure 入口網站 - 應用程式註冊 入口網站指派應用程式的應用程式 (用戶端) 標識符。

// Line breaks for legibility only

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=your_client_id
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fads.microsoft.com%2Fmsads.manage
&state=12345
  1. 複製下列URL並貼到瀏覽器中,以執行此範例要求以取得使用者同意。

注意事項

將下列 URL 中的 your_client_id 取代為 Azure 入口網站 - 應用程式註冊 入口網站指派應用程式的應用程式 (用戶端) 識別符。

<https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_client_id&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F&response_mode=query&scope=openid%20offline_access%20https%3A%2F%2Fads.microsoft.com%2Fmsads.manage&state=12345>
  1. 使用您的Microsoft帳戶認證登入,並授 與應用程式 管理Microsoft Advertising 帳戶的同意。
  2. 登入之後,您的瀏覽器應該會重新導向至 https://localhost/myapp/ ,並在網址列中使用 code 。 您可以忽略頁面上的錯誤訊息。
  3. 接下來,您將使用程式代碼來 取得存取和重新整理令牌

Microsoft身分識別平臺端點也會確保使用者已同意查詢參數中指出的 scope 許可權。 如果使用者尚未同意任何這些許可權,則會要求使用者同意必要的許可權。 雖然本指南主要著重於透過 管理 Microsoft Advertising 帳戶 scope=https://ads.microsoft.com/msads.manage,但 這裡提供有關Microsoft身分識別平台中許可權和同意的詳細數據。

一旦使用者驗證並授與同意,Microsoft身分識別平臺端點會使用 參數中response_mode指定的方法,在指定redirect_uri的 傳回您的應用程式回應。 例如,如果使用者授與應用程式管理其Microsoft Advertising 帳戶的許可權,回呼 URI 會包含如下的授權碼: http://localhost/myapp/?code=CodeGoesHere&state=12345

如果使用者授與應用程式管理其 Microsoft Advertising 帳戶的許可權,您應該在下一個步驟中立即使用程式代碼。 授權碼的簡短持續時間大約為 5 分鐘,可能會變更。 如果使用者拒絕您的應用程式許可權來管理其Microsoft Advertising 帳戶,則回呼 URI 會包含錯誤和錯誤描述字段,如下所示: http://localhost/myapp/?error=access_denied&error_description=ERROR_DESCRIPTION&state=ClientStateGoesHere。 如需 OAuth 錯誤的詳細資訊,請參閱 常見的 OAuth 錯誤驗證和授權錯誤碼

下表包含 Bing 廣告 API 用戶端可以在同意要求中包含的參數。 如需選擇性參數的其他詳細資訊,請參閱Microsoft身分識別平臺 OAuth 2.0 授權碼流程 檔。

參數 必要/選用 描述
client_id 必要 應用程式 (Azure 入口網站 - 應用程式註冊 入口網站指派給應用程式的用戶端) 識別碼。
code_challenge 推薦 用來透過 Code Exchange 的證明金鑰 (PKCE) 來保護授權碼授與。 如果 code_challenge_method 包含 ,則為必要專案。 如需詳細資訊,請參閱 PKCE RFC。 現在建議所有應用程式類型都使用此選項,例如原生應用程式、SPA 和機密用戶端,例如 Web 應用程式。
code_challenge_method 推薦 用來為 參數編碼 code_verifiercode_challenge 的方法。 可以是下列其中一個值:

- plain
- S256

如果排除, code_challenge 如果 code_challenge 包含 ,則假設為純文本。 Microsoft身分識別平台同時 plain 支援 和 S256。 如需詳細資訊,請參閱 PKCE RFC
prompt 選用 指出應用程式所需的使用者互動類型。 支援的值包括下列各項:
- prompt=login 會強制使用者在該要求上輸入其認證,並否定單一登錄。
- prompt=none 與「登入」相反,亦即,它會確保使用者不會看到任何互動式提示。 如果無法透過單一登錄以無訊息方式完成要求,Microsoft身分識別平臺端點會傳回interaction_required錯誤。
- prompt=consent 會在使用者登入之後觸發 OAuth 同意對話方塊,要求使用者將許可權授與應用程式。
- prompt=select_account 將會中斷單一登錄並提供帳戶選取體驗,列出會話中的所有帳戶或任何已記住的帳戶,或選擇完全使用不同帳戶的選項。
redirect_uri 必要 應用程式的redirect_uri,您的應用程式可在其中傳送和接收驗證回應。 它必須完全符合您在入口網站中註冊的其中一個redirect_uris,但必須是URL編碼。 針對原生 & 行動裝置應用程式,您應該使用的 https://login.microsoftonline.com/common/oauth2/nativeclient預設值。
response_mode 推薦 指定應該用來將產生的令牌傳回應用程式的方法。 可以是下列其中一項:

- query
- fragment
- form_post

query 提供程式代碼做為重新導向 URI 上的查詢字串參數。 如果您使用隱含流程要求識別碼令牌,則無法使用 queryOpenID 規格中指定的 。如果您只要求程式代碼,您可以使用 queryfragmentform_postform_post 會執行 POST,其中包含重新導向 URI 的程式代碼。 如需詳細資訊,請參閱 OpenID Connect 通訊協定
response_type 必要 授權碼流程必須包含 code
scope 必要 您希望使用者同意 的範圍 以空格分隔的清單。 請務必包含 https://ads.microsoft.com/msads.manage ,以提示使用者輸入 Microsoft Advertising 存取權。 包含 offline_access 以確保回應中包含重新整理令牌。
state 推薦 要求中包含的值,也會在令牌回應中傳回。 它可以是您想要的任何內容字串。 隨機產生的唯一值通常用於 防止跨網站偽造要求攻擊。 值也可以在發生驗證要求之前,編碼應用程式中用戶狀態的相關信息,例如他們所在的頁面或檢視。
tenant 必要 要求 {tenant} 路徑中的值可用來控制誰可以登入應用程式。 為了確保您的應用程式同時支援 MSA 個人帳戶和 Azure AD 公司或學校帳戶,建議您使用 common 作為 Bing 廣告 API 驗證的租使用者。

如果您的應用程式需要另一個租使用者,請 參閱Microsoft身分識別平臺端點 以取得詳細資訊。

後續步驟

另請參閱

開始使用