Přístup k rozhraní Graph API

Pokud chcete použít rozhraní API pro Graph z aplikace Xamarin, postupujte takto:

  1. Registrace do Azure Active Directory na windowsazure.com Portal a pak
  2. Nakonfigurujte služby.

Krok 3. Přidání ověřování Active Directory do aplikace

V aplikaci přidejte odkaz na knihovnu azure Azure Active Directory (Azure ADAL) pomocí NuGet Správce balíčků v Visual Studio nebo Visual Studio pro Mac. Nezapomeňte vybrat možnost Zobrazit předběžné verze balíčků, které tento balíček zahrnou, protože je stále ve verzi Preview.

Důležité

Poznámka: Azure ADAL 3.0 je v současné době ve verzi Preview a před vydáním finální verze může dojít k změnám, které mohou způsobit přerušení.

Přidání odkazu na knihovnu Azure Active Directory Authentication Library (Azure ADAL)

V aplikaci teď budete muset přidat následující proměnné na úrovni třídy, které jsou vyžadovány pro tok ověřování.

//Client ID
public static string clientId = "25927d3c-.....-63f2304b90de";
public static string commonAuthority = "https://login.windows.net/common"
//Redirect URI
public static Uri returnUri = new Uri("http://xam-demo-redirect");
//Graph URI if you've given permission to Azure Active Directory
const string graphResourceUri = "https://graph.windows.net";
public static string graphApiVersion = "2013-11-08";
//AuthenticationResult will hold the result after authentication completes
AuthenticationResult authResult = null;

Tady je třeba poznamenat jednu commonAuthority věc: . Když je koncovým bodem ověřování , stane se z vaší aplikace více tenantů, což znamená, že se každý uživatel může přihlásit common pomocí svých přihlašovacích údajů služby Active commonDirectory. Po ověření bude tento uživatel pracovat na kontextu své vlastní služby Active Directory– to znamená, že se mu zobrazí podrobnosti týkající se jeho služby Active Directory.

Metoda zápisu pro získání přístupového tokenu

Následující kód (pro Android) spustí ověřování a po dokončení přiřadí výsledek v authResult . Implementace iOS a Windows Phone se mírně liší: druhý parametr ( ) se v iOSu liší a chybí Activity Windows Phone.

public static async Task<AuthenticationResult> GetAccessToken
            (string serviceResourceId, Activity activity)
{
    authContext = new AuthenticationContext(Authority);
    if (authContext.TokenCache.ReadItems().Count() > 0)
        authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
    var authResult = await authContext.AcquireTokenAsync(serviceResourceId, clientId, returnUri, new AuthorizationParameters(activity));
    return authResult;
}  

Ve výše uvedeném kódu AuthenticationContext zodpovídá za ověřování pomocí commonAuthority. Má metodu , která převezměte parametry jako prostředek, ke kterému je potřeba získat AcquireTokenAsync přístup, v tomto případě , a graphResourceUriclientIdreturnUri . Po dokončení ověřování se returnUri aplikace vrátí do . Tento kód zůstane stejný pro všechny platformy, ale poslední parametr , se bude lišit na různých platformách a zodpovídá za řízení AuthorizationParameters toku ověřování.

V případě Androidu nebo iOSu předáváme parametr do pro sdílení kontextu, zatímco v Windows se předává bez jakéhokoli parametru thisAuthorizationParameters(this) jako nového AuthorizationParameters() parametru .

Zpracování pokračování pro Android

Po dokončení ověřování by se tok měl vrátit do aplikace. V případě Androidu se zpracovává pomocí následujícího kódu, který by se měl přidat do souboru MainActivity.cs:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
  base.OnActivityResult(requestCode, resultCode, data);
  AuthenticationAgentContinuationHelper.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
}

Zpracování pokračování pro Windows Phone

Například Windows Phone v OnActivated souboru OnActivated pomocí následujícího kódu:

protected override void OnActivated(IActivatedEventArgs args)
{
#if WINDOWS_PHONE_APP
  if (args is IWebAuthenticationBrokerContinuationEventArgs)
  {
     WebAuthenticationBrokerContinuationHelper.SetWebAuthenticationBrokerContinuationEventArgs(args as IWebAuthenticationBrokerContinuationEventArgs);
  }
#endif
  base.OnActivated(args);
}

Když teď aplikaci spustíte, měli byste vidět ověřovací dialogové okno. Po úspěšném ověření vás požádá o oprávnění pro přístup k prostředkům (v našem případě Graph API):

Po úspěšném ověření se zobrazí žádost o oprávnění pro přístup k prostředkům v našem případě Graph API.

Pokud je ověření úspěšné a aplikaci jste autorizováni pro přístup k prostředkům, měli byste v souboru získat AccessTokenRefreshToken kombinaci a authResult . Tyto tokeny jsou potřeba pro další volání rozhraní API a pro autorizaci Azure Active Directory na pozadí.

Tyto tokeny jsou potřeba pro další volání rozhraní API a pro autorizaci Azure Active Directory na pozadí.

Například následující kód umožňuje získat seznam uživatelů ze služby Active Directory. Adresu URL webového rozhraní API můžete nahradit webovým rozhraním API, které je chráněné službou Azure AD.

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get,
    "https://graph.windows.net/tendulkar.onmicrosoft.com/users?api-version=2013-04-05");
request.Headers.Authorization =
  new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();