İlk API çağrınızı yapma
Önemli
Haziran 2022'de, Bing Ads gereksinimi olarak çok faktörlü kimlik doğrulamasını kullanıma aldık. Bu gereksinimle uyumlu olmak için yine de kod değişikliği yapmanız gerekebilir. Microsoft Advertising, Ekim ayının başlarında teknik uygulama denetimleri gerçekleştiriyor.
Bu blog gönderisinde uyumluluğu sağlamak için gerçekleştirmeniz gereken adımlar özetlenmiştir.
Daha fazla bilgi için çok faktörlü kimlik doğrulama gereksinimi kılavuzuna bakın.
Yalnızca bir şeyin hemen çalışmasını istiyorsanız, Microsoft Advertising kullanıcı bilgilerinizi almak için bu adımları izleyin.
Üretim Hızlı Başlangıcı
Üretim ortamında kimlik doğrulaması yapmak için önce bir uygulama kaydetmeniz gerekir. Microsoft hesabı kimlik bilgilerinizle oturum açın ve uygulamanıza Microsoft Advertising hesaplarınızı yönetmek için onay verin.
- Yeni bir dosya oluşturun ve aşağıdaki betiği yapıştırın. Kayıtlı uygulamanızın Uygulama Kimliği olarak ayarlayın
$clientId
. Bir web uygulamasını gizli anahtarla kaydettiyseniz, erişim belirteçlerini istediğinizde de eklemeniz$client_secret=YourWebAppClientSecret
gerekir.
Not
Aşağıdaki your_client_id Azure portal - Uygulama kayıtları portalının uygulamanızı atadığı uygulama (istemci) kimliğiyle değiştirin.
# Replace your_client_id with your registered application ID.
$clientId = "your_client_id"
Start-Process "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=$clientId&scope=openid%20profile%20https://ads.microsoft.com/msads.manage%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient&state=ClientStateGoesHere&prompt=login"
$code = Read-Host "Grant consent in the browser, and then enter the response URI here:"
$code = $code -match 'code=(.*)\&'
$code = $Matches[1]
# Get the initial access and refresh tokens.
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=authorization_code&redirect_uri=https%3A%2F%2Flogin.microsoftonline.com%2Fcommon%2Foauth2%2Fnativeclient"
$oauthTokens = ($response.Content | ConvertFrom-Json)
Write-Output "Access token: " $oauthTokens.access_token
Write-Output "Access token expires in: " $oauthTokens.expires_in
Write-Output "Refresh token: " $oauthTokens.refresh_token
# The access token will expire e.g., after one hour.
# Use the refresh token to get new access and refresh tokens.
$response = Invoke-WebRequest https://login.microsoftonline.com/common/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=refresh_token&refresh_token=$($oauthTokens.refresh_token)"
$oauthTokens = ($response.Content | ConvertFrom-Json)
Write-Output "Access token: " $oauthTokens.access_token
Write-Output "Access token expires in: " $oauthTokens.expires_in
Write-Output "Refresh token: " $oauthTokens.refresh_token
Dosyayı kaydedin ve adlandırın Get-Tokens-Production.ps1
(istediğiniz her şeyi adlandırabilirsiniz, ancak uzantı .ps1 olmalıdır).
Bir Microsoft Advertising hesabını program aracılığıyla yönetmek için web uygulaması onay akışı aracılığıyla en az bir kez onay vermeniz gerekir. Bundan sonra, yeni erişim istemek ve başka kullanıcı etkileşimi olmadan belirteçleri yenilemek için en son yenileme belirtecini kullanabilirsiniz.
Şimdi bir konsol penceresi açın
Get-Tokens-Production.ps1
. Komut isteminde, kaydettiğinizGet-Tokens-Production.ps1
klasöre gidin ve aşağıdaki komutu girin:powershell.exe -File .\Get-Tokens-Production.ps1
PowerShell betiği başarıyla çalıştırıldığında, Microsoft Advertising kimlik bilgilerinizi girdiğiniz bir tarayıcı oturumu başlatır. Onay verdikten sonra, tarayıcının adres çubuğu verme kodunu içerir (bkz. ?code=UseThisCode&...).
https://login.microsoftonline.com/common/oauth2/nativeclient?code=M.R4_BAY.f202904c-2269-4daf-1e21-862ed4d49143
Verme kodunu kopyalayın (M.R4_BAY.f202904c-2269-4daf-1e21-862ed4d49143 örneği değil kendi kodunuz) ve istemin konsol penceresine girin. PowerShell betiği daha sonra erişim ve yenileme belirteçlerini döndürür. (Betik, belirteçlerin nasıl yenilendiğini gösteren bir örnek olarak Invoke-WebRequest ikinci bir çağrı yapar.) Yenileme belirtecini parola gibi değerlendirmelisiniz; birisi bu kaynağı ele alırsa kaynaklarınıza erişebilir. Yenileme belirteci uzun ömürlüdür ancak geçersiz hale gelebilir. bir invalid_grant hatası alırsanız yenileme belirteciniz artık geçerli değildir ve kullanıcı onayı ve yeni yenileme belirteci almak için PowerShell betiğini yeniden çalıştırmanız
Get-Tokens-Production.ps1
gerekir.Yeni bir dosya oluşturun ve aşağıdaki betiği yapıştırın.
accessToken
değerini aldığınızGet-Tokens-Production.ps1
değere ayarlayın ve burada özetlenen adımları izleyerek aldığınız geliştirici belirtecine ayarlayın$developerToken
.$accessToken = "AccessTokenGoesHere"; $developerToken = "DeveloperTokenGoesHere"; [xml]$getUserRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v13="https://bingads.microsoft.com/Customer/v13"> <soapenv:Header> <v13:DeveloperToken>{0}</v13:DeveloperToken> <v13:AuthenticationToken>{1}</v13:AuthenticationToken> </soapenv:Header> <soapenv:Body> <v13:GetUserRequest> <v13:UserId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </v13:GetUserRequest> </soapenv:Body> </soapenv:Envelope>' -f $developerToken, $accessToken $headers = @{"SOAPAction" = "GetUser"} $uri = "https://clientcenter.api.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc" $response = Invoke-WebRequest $uri -Method post -ContentType 'text/xml' -Body $getUserRequest -Headers $headers Write-Output $response.Content
Dosyayı kaydedin ve adlandırın
Get-User.ps1
(istediğiniz her şeyi adlandırabilirsiniz, ancak uzantı .ps1 olmalıdır).Şimdi bir konsol penceresi açın
Get-User.ps1
. Komut isteminde, kaydettiğinizGet-User.ps1
klasöre gidin ve aşağıdaki komutu girin:powershell.exe -File .\Get-User.ps1
PowerShell betiği başarıyla çalıştırıldığında, müşteri rolleri de dahil olmak üzere Microsoft Advertising kullanıcınızın ayrıntılarını yazdırmalıdır. Ayrıntılar için bkz. GetUser.
Korumalı Alan Hızlı Başlangıç
Korumalı alan ortamında kimlik doğrulaması yapmak için bir uygulamayı kaydetmeniz gerekmez. Genel "Öğretici Örnek Uygulama" istemci kimliğini kullanmanız (ör. 00001111-aaaa-2222-bbbb-3333cccc4444) kullanmanız gerekir.
Microsoft Advertising korumalı alan hesabına kaydolun. Microsoft hesabı (MSA) e-posta adresi outlook-int.com (örneğin, someone@outlook-int.com) olmalıdır. Daha fazla ayrıntı için bkz . Korumalı alan.
Yeni bir dosya oluşturun ve aşağıdaki betiği yapıştırın.
# Replace the Tutorial Sample App ID with your registered application ID. $clientId = "00001111-aaaa-2222-bbbb-3333cccc4444" Start-Process "https://login.windows-ppe.net/consumers/oauth2/v2.0/authorize?client_id=$clientId&scope=openid%20profile%20https://api.ads.microsoft.com/msads.manage%20offline_access&response_type=code&redirect_uri=https://login.windows-ppe.net/common/oauth2/nativeclient&state=ClientStateGoesHere&prompt=login" $code = Read-Host "Grant consent in the browser, and then enter the response URI here:" $code = $code -match 'code=(.*)\&' $code = $Matches[1] # Get the initial access and refresh tokens. $response = Invoke-WebRequest https://login.windows-ppe.net/consumers/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://api.ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=authorization_code&redirect_uri=https://login.windows-ppe.net/common/oauth2/nativeclient" $oauthTokens = ($response.Content | ConvertFrom-Json) Write-Output "Access token: " $oauthTokens.access_token Write-Output "Access token expires in: " $oauthTokens.expires_in Write-Output "Refresh token: " $oauthTokens.refresh_token # The access token will expire e.g., after one hour. # Use the refresh token to get new access and refresh tokens. $response = Invoke-WebRequest https://login.windows-ppe.net/consumers/oauth2/v2.0/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientId&scope=https://api.ads.microsoft.com/msads.manage%20offline_access&code=$code&grant_type=refresh_token&refresh_token=$($oauthTokens.refresh_token)" $oauthTokens = ($response.Content | ConvertFrom-Json) Write-Output "Access token: " $oauthTokens.access_token Write-Output "Access token expires in: " $oauthTokens.expires_in Write-Output "Refresh token: " $oauthTokens.refresh_token
Dosyayı kaydedin ve adlandırın
Get-Tokens-Sandbox.ps1
(istediğiniz her şeyi adlandırabilirsiniz, ancak uzantı .ps1 olmalıdır).Kullanıcının web uygulaması onay akışı aracılığıyla en az bir kez onay vermesi gerekir. Bundan sonra, yeni erişim istemek ve başka kullanıcı etkileşimi olmadan belirteçleri yenilemek için en son yenileme belirtecini kullanabilirsiniz.
Şimdi bir konsol penceresi açın
Get-Tokens-Sandbox.ps1
. Komut isteminde, kaydettiğinizGet-Tokens-Sandbox.ps1
klasöre gidin ve aşağıdaki komutu girin:powershell.exe -File .\Get-Tokens-Sandbox.ps1
PowerShell betiği başarıyla çalıştırıldığında, Microsoft Advertising kimlik bilgilerinizi girdiğiniz bir tarayıcı oturumu başlatır. Onay verdikten sonra, tarayıcının adres çubuğu verme kodunu içerir (bkz. ?code=UseThisCode&...).
https://login.windows-ppe.net/common/oauth2/nativeclient?code=M.R0_CD1.132de532-5105-7550-b1fd-d37f9af2f009
Verme kodunu (M.R0_CD1.132de532-5105-7550-b1fd-d37f9af2f009 örneği değil, kendi kodunuz) kopyalayın ve komut isteminde konsol penceresine girin. PowerShell betiği daha sonra erişim ve yenileme belirteçlerini döndürür. (Betik, belirteçlerin nasıl yenilendiğini gösteren bir örnek olarak Invoke-WebRequest ikinci bir çağrı yapar.) Yenileme belirtecini parola gibi değerlendirmelisiniz; birisi bu kaynağı ele alırsa kaynaklarınıza erişebilir. Yenileme belirteci uzun ömürlüdür ancak geçersiz hale gelebilir. bir invalid_grant hatası alırsanız yenileme belirteciniz artık geçerli değildir ve kullanıcı onayı ve yeni yenileme belirteci almak için PowerShell betiğini yeniden çalıştırmanız
Get-Tokens-Sandbox.ps1
gerekir.Yeni bir dosya oluşturun ve aşağıdaki betiği yapıştırın. değerini
accessToken
, içindenGet-Tokens-Sandbox.ps1
aldığınız değere ayarlayın.$accessToken = "AccessTokenGoesHere"; $developerToken = "BBD37VB98"; [xml]$getUserRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v13="https://bingads.microsoft.com/Customer/v13"> <soapenv:Header> <v13:DeveloperToken>{0}</v13:DeveloperToken> <v13:AuthenticationToken>{1}</v13:AuthenticationToken> </soapenv:Header> <soapenv:Body> <v13:GetUserRequest> <v13:UserId xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </v13:GetUserRequest> </soapenv:Body> </soapenv:Envelope>' -f $developerToken, $accessToken $headers = @{"SOAPAction" = "GetUser"} $uri = "https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v13/CustomerManagementService.svc" $response = Invoke-WebRequest $uri -Method post -ContentType 'text/xml' -Body $getUserRequest -Headers $headers Write-Output $response.Content
Dosyayı kaydedin ve adlandırın
Get-User.ps1
(istediğiniz her şeyi adlandırabilirsiniz, ancak uzantı .ps1 olmalıdır).Şimdi bir konsol penceresi açın
Get-User.ps1
. Komut isteminde, kaydettiğinizGet-User.ps1
klasöre gidin ve aşağıdaki komutu girin:powershell.exe -File .\Get-User.ps1
PowerShell betiği başarıyla çalıştırıldığında, müşteri rolleri de dahil olmak üzere Microsoft Advertising kullanıcınızın ayrıntılarını yazdırmalıdır. Ayrıntılar için bkz. GetUser.