2015-06-30 34 views
1

我試圖做一個Django應用程序,可以autheticate用戶使用微軟賬戶365,我發現在Github上這個項目:https://github.com/jasonjoh/pythoncontactsDjango的與微軟的API 365 - 服務發現錯誤

我跟着文件和我得到直到我被提示到Microsoft帳戶登錄頁面,我同意Azure AD應用程序。

閱讀代碼後,我明白Django應用程序正在試圖獲得可用的服務在:https://api.office.com/discovery/v1.0/me/services

的問題是,該鏈接給我這個錯誤:

{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":"Access denied. You do not have permission to perform this action or access this resource."}} 

我不'不知道這個問題是由於Azure AD應用程序權限還是由於代碼引起的。

我的理解是,Django應用程序要求Azure AD授權終端登錄。此端點正在返回登錄窗口,並且在身份驗證後,我將獲得授權碼。有了它,我應該兌換授權碼並獲取Azure AD令牌端點上的訪問令牌,以便能夠使用它調用Office 365 API。

這是我的應用程序有 ---- ---- ----

回答

1

您需要的權限添加到其他應用程序下面的權限在Azure的廣告:「Office 365中的Exchange Online」。

如果你沒有看到它,請確保您有一個付費訂閱的Azure和Office 365中如果只有在Azure中的訂閱,您將看到「默認目錄」,將不顯示你的上述的應用程序。

希望它有幫助:)

0

rGonzalez是正確的。該代碼示例使用Office 365統一API發佈之前正在生產的Office 365 API(在公開預覽中)。您有2個選項: - 選項1(推薦):使用Office 365 Unified API。您需要修改應用以跳過調用發現API的步驟,而是調用端點https://graph.microsoft.com/beta。有關API文檔,請參閱here。 - 選項#2:獲取的Exchange訂閱您的Office 365租戶,所以你看到的Office 365的Exchange Online列爲您的應用程序註冊頁面的選項,並選擇「讀取和寫入用戶的日曆」,「發送郵件的用戶」和「讀寫用戶郵件」爲您的應用程序的權限。

此外,在附加的屏幕截圖中,您沒有爲您的應用程序「讀取用戶日曆」和「讀取用戶郵件」權限,因爲它們已包含在「具有對用戶日曆的完全訪問權限」和「寫入用戶郵件「權限。