使用 Microsoft Graph 建置 Python 應用程式

建立 Python 控制台應用程式

從建立新的 Python 檔案開始。

  1. 建立名為 main.py 的新檔案,並新增下列程序代碼。

    print ('Hello world!')
    
  2. 儲存盤案,並使用下列命令來執行檔案。

    python3 main.py
    

    如果可以運作,應用程式應該會輸出 Hello world!

安裝相依性

繼續之前,請新增一些您稍後將使用的額外相依性。

在 CLI 中執行下列命令以安裝相依性。

python3 -m pip install azure-identity
python3 -m pip install msgraph-sdk

載入應用程式設定

在本節中,您會將應用程式註冊的詳細數據新增至專案。

  1. 在與 config.cfgmain.py 相同的目錄中建立檔案,並新增下列程序代碼。

    [azure]
    clientId = YOUR_CLIENT_ID_HERE
    tenantId = common
    graphUserScopes = User.Read Mail.Read Mail.Send
    
  2. 根據下表更新值。

    設定
    clientId 應用程式註冊的用戶端識別碼
    tenantId 如果您選擇只允許組織中的使用者登入的選項,請將此值變更為您的租使用者識別碼。 否則,請保留為 common

    提示

    您可以選擇性地在名為 config.dev.cfg 的個別檔案中設定這些值。

設計應用程式

在本節中,您將建立簡單的控制台型功能表。

  1. 建立名為 graph.py 的新檔案,並將下列程式代碼新增至該檔案。

    # Temporary placeholder
    class Graph:
        def __init__(self, config):
            self.settings = config
    

    此程式代碼是佔位元。 您將在下一 Graph 節中實作 類別。

  2. 啟 main.py ,並以下列程式代碼取代其整個內容。

    import asyncio
    import configparser
    from msgraph.generated.models.o_data_errors.o_data_error import ODataError
    from graph import Graph
    
    async def main():
        print('Python Graph Tutorial\n')
    
        # Load settings
        config = configparser.ConfigParser()
        config.read(['config.cfg', 'config.dev.cfg'])
        azure_settings = config['azure']
    
        graph: Graph = Graph(azure_settings)
    
        await greet_user(graph)
    
        choice = -1
    
        while choice != 0:
            print('Please choose one of the following options:')
            print('0. Exit')
            print('1. Display access token')
            print('2. List my inbox')
            print('3. Send mail')
            print('4. Make a Graph call')
    
            try:
                choice = int(input())
            except ValueError:
                choice = -1
    
            try:
                if choice == 0:
                    print('Goodbye...')
                elif choice == 1:
                    await display_access_token(graph)
                elif choice == 2:
                    await list_inbox(graph)
                elif choice == 3:
                    await send_mail(graph)
                elif choice == 4:
                    await make_graph_call(graph)
                else:
                    print('Invalid choice!\n')
            except ODataError as odata_error:
                print('Error:')
                if odata_error.error:
                    print(odata_error.error.code, odata_error.error.message)
    
  3. 在文件尾新增下列佔位符方法。 您將在後續步驟中實作它們。

    async def greet_user(graph: Graph):
        # TODO
        return
    
    async def display_access_token(graph: Graph):
        # TODO
        return
    
    async def list_inbox(graph: Graph):
        # TODO
        return
    
    async def send_mail(graph: Graph):
        # TODO
        return
    
    async def make_graph_call(graph: Graph):
        # TODO
        return
    
  4. 新增下列程式代碼列,以在檔案尾呼叫 main

    # Run main
    asyncio.run(main())
    

這會實作基本功能表,並從命令行讀取用戶的選擇。