をリンクされている、私は私の側にそれをテストする場合は、このavocado-console-clientサンプルを追いました。次のようにauthCtx.AcquireTokenAsync
にNuGet
2.Modify機能authCtx.AcquireToken
経由で最新の安定版(3.13.8)に
1.Update Microsoft.IdentityModel.Clients.ActiveDirectory
:予想通り、私はあなたが以下の手順を参照してください可能性があり、それを動作させることができ:あなたのネイティブアプリ3.Register
var authResult = await authCtx.AcquireTokenAsync(avocadoResourceUri, thisConsoleAppClientId, thisConsoleAppUri, new PlatformParameters(PromptBehavior.Auto));
と "AzureのActive Directoryの">「アプリケーションREGをクリックし、Azure PortalにしてthisConsoleAppClientId
とthisConsoleAppUri
サインオンを変更次のようにistrations」、あなたのネイティブアプリを追加するためにbuttionの追加]をクリックします:thisConsoleAppClientId
については
(クライアントアプリID)を、あなたは、Azureのポータル上でそれを見つけることができる:
thisConsoleAppUri
(アプリの返信先URL):
注:アボカドのAPIにアクセスするには、アボカドに委任許可を得て、あなたのアプリケーションを割り当てる必要があります。
AzureでADアプリケーションを選択します。設定ブレードで、アクセス許可を追加し、[サービスへのフルアクセス権を持つ]オプションを選択するには、[必須アクセス権]をクリックします。
注:あなたは入力Avocado [wsfed enabled]
はアボカドのAPIを選択することができます。
設定が完了したら、テストすることができます。ここに私のコードスニペットがあります:
プログラムです。CS
class Program
{
static void Main(string[] args)
{
AvocadoDemo();
Console.WriteLine("press any key to exit...");
Console.ReadKey();
}
static async Task AvocadoDemo()
{
string thisConsoleAppClientId = "c588cf8d-8651-4b37-8d10-49237cf92f8e";
Uri thisConsoleAppUri = new Uri("http://bruceConsoleForAvocado");
string avocadoResourceUri = "https://microsoft.onmicrosoft.com/Avocado";
// Get the access token for Avocado. This will pop up the login dialog and consent page for the first time.
// Then the token will be cached in the FileCache, and AcquireToken will renew the token automatically in the subsequent run.
AuthenticationContext authCtx = new AuthenticationContext("https://login.windows.net/microsoft.onmicrosoft.com", new FileCache());
var authResult = await authCtx.AcquireTokenAsync(avocadoResourceUri, thisConsoleAppClientId, thisConsoleAppUri, new PlatformParameters(PromptBehavior.Auto));
if (!string.IsNullOrEmpty(authResult.AccessToken))
Console.WriteLine("accessToken: " + authResult.AccessToken);
// call Avocado API
var baseAddress = new Uri("https://avocado");
var cookieContainer = new CookieContainer();
// POSTing a new execution will invoke a redirect, so for example purposes we are disabling it here.
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer, AllowAutoRedirect = false })
using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
{
// Need to set this cookie for avocado api to work.
cookieContainer.Add(baseAddress, new Cookie("deep_link", "-1"));
// add your access token in the header
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
// Here's a GET example
var avoResultGet = client.GetAsync("/schedules/7215.json").Result;
var strGet = avoResultGet.Content.ReadAsStringAsync().Result;
Console.WriteLine("Avocado API returns: " + strGet);
}
}
}
結果
あなたが認証されているので、あなたが望むように、特定のAPIを呼び出すためAPI Documentationを参照することができます。
この問題は解決しましたか? –