Aracılığıyla paylaş


Öğretici: Python Flask web uygulamasından Microsoft Graph API'sini çağırma

Şunlar için geçerlidir: Aşağıdaki içeriğin iş gücü kiracıları için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. İş gücü kiracıları Aşağıdaki içeriğin dış kiracılar için geçerli olduğunu gösteren beyaz onay işareti simgesine sahip yeşil daire. Dış kiracılar (daha fazla bilgi edinin)

Bu öğreticide, Python Flask web uygulamasından Microsoft Graph API'sini çağıracaksınız. önceki öğreticide, uygulamaya oturum açma ve oturum kapatma işlemlerini eklediniz. Kullanıcı oturum açtığında, uygulama Microsoft Graph API'sini çağırmak için bir erişim belirteci alır.

Bu eğitimde, siz:

  • Erişim belirteci almak için mevcut Python Flask web uygulamasını güncelleştirme
  • Microsoft Graph API'sini çağırmak için erişim belirtecini kullanın.

Önkoşullar

Öğretici: Microsoft kimlik platformunu kullanarak Python Flask web uygulamasına oturum açma ekleme makalesindeki adımları tamamlayın.

Kapsamları ve API uç noktasını tanımlama

Bu örnekte, oturum açmış kullanıcının profil bilgilerini almak için Microsoft Graph API'sini çağırırız. Uygulamanız bir iş gücü kiracısındaysa, oturum açmada kullanıcı uygulamanın Microsoft Graph API'sine erişmesi için gereken kapsamları kabul eder. Uygulamanız bir dış kiracıdaysa, kiracınızdaki kullanıcılar adına yönetici onayı verdiğinizden emin olun. Uygulama daha sonra API'yi çağırmak ve sonuçları görüntülemek için erişim belirtecini kullanır.

.env dosyanıza, çağırdığımız uç noktayı ve Microsoft Graph API'sini çağırmak için gereken kapsamları ekleyin:

SCOPE=User.Read
ENDPOINT=https://graph.microsoft.com/v1.0/me

app_config.py dosyasını güncelleştirerek uygulamanızdaki yeni yapılandırmaları okuyun.

# other configs go here
SCOPE = os.getenv("SCOPE")
ENDPOINT = os.getenv("ENDPOINT")

Korumalı API çağırma

  1. API uç noktasını giriş sayfasına geçirin. Bu, uç noktanızı çağırmanızı sağlar. / Yolu, aşağıdaki kod parçacığında gösterildiği gibi görünecek şekilde güncelleştirin:

    @app.route("/")
    @auth.login_required
    def index(*, context):
        return render_template(
            'index.html',
            user=context['user'],
            title="Flask Web App Sample",
            api_endpoint=os.getenv("ENDPOINT") # added this line
        )
    
  2. Aşağıdaki kod parçacığında gösterildiği gibi korumalı Microsoft Graph API'sini çağırın. Uygulamamızın kullanması gereken kapsamların listesini geçiririz. Kapsamlar varsa, bağlam bir erişim belirteci içerir. Erişim belirteci aşağı akış API'sini çağırmak için kullanılır. Bu kodu app.py dosyasına ekleyin:

    @app.route("/call_api")
    @auth.login_required(scopes=os.getenv("SCOPE", "").split())
    def call_downstream_api(*, context):
        api_result = requests.get(  # Use access token to call a web api
            os.getenv("ENDPOINT"),
            headers={'Authorization': 'Bearer ' + context['access_token']},
            timeout=30,
        ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?"
        return render_template('display.html', title="API Response", result=api_result)
    

    Uygulama başarıyla bir erişim belirteci alırsa, requests.get(...) yöntemini kullanarak alt hizmet API'sine bir HTTP isteğinde bulunur. İstekte, aşağı akış API'si URL'miz içinde app_config.ENDPOINT belirtilir ve erişim belirteci istek üst bilgisinin Authorization alanına geçirilir.

    Aşağı akış API'sine (Microsoft Graph API) yönelik başarılı bir istek, bir değişkende depolanan ve işleme için şablona api_result geçirilen bir display.html JSON yanıtı döndürür.

API sonuçlarını görüntüleme

şablonlar klasöründe display.html adlı bir dosya oluşturun. Bu sayfada, Microsoft Graph uç noktasına yapılan çağrının sonucu görüntülenir. display.html dosyasına aşağıdaki kodu ekleyin:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Microsoft Identity Python Web App: API</title>
</head>
<body>
    <a href="javascript:window.history.go(-1)">Back</a> <!-- Displayed on top of a potentially large JSON response, so it will remain visible -->
    <h1>{{title}}</h1>
    <pre>{{ result |tojson(indent=4) }}</pre> <!-- Just a generic json viewer -->
</body>
</html>

Örnek web uygulamasını çalıştırma ve test edin

  1. Terminalinizde aşağıdaki komutu çalıştırın:

    python3 -m flask run --debug --host=localhost --port=3000
    

    İstediğiniz bağlantı noktasını kullanabilirsiniz. Bu bağlantı noktası, daha önce kaydettiğiniz yeniden yönlendirme URI'sinin bağlantı noktasına benzer olmalıdır.

  2. Tarayıcınızı açın ve http://localhost:3000'a gidin. Bir oturum açma sayfası görürsünüz.

  3. Adımları izleyerek Microsoft hesabınızla oturum açın. Oturum açmak için bir e-posta adresi ve parola sağlamanız istenir.

  4. Uygulamanın ihtiyaç duyduğu kapsamlar varsa bir onay ekranı gösterilir. Uygulama, erişime izin ettiğiniz verilere erişimi korumak ve oturum açmak için izin istemektedir. Kabul Etseçin. Hiçbir kapsam tanımlanmadıysa bu ekran görünmez.

API'yi Çağır

  1. Giriş sayfasında API çağır bağlantısını seçin. Uygulama, oturum açmış kullanıcının profil bilgilerini almak için Microsoft Graph API'sini çağırır. Uygulama, API çağrısının sonucunu görüntüler.

  2. Uygulamanın oturumunu kapatmak için Oturum Kapatma'ni seçin. Oturumu kapatmak için bir hesap seçmeniz istenir. Oturum açmak için kullandığınız hesabı seçin.

Başvuru malzemesi

ms_identity_python, MSAL kitaplığının ayrıntılarını özetler. Daha fazla bilgi için MSAL Python belgelerine bakın. Bu başvuru malzemesi, MSAL Python kullanarak bir uygulamayı nasıl başlatıp belirteçler aldığınızı anlamanıza yardımcı olur.