2016-11-30 49 views
0

我有一個使用adal-node(https://www.npmjs.com/package/adal-node)通過OAuth2向Dynamics CRM進行身份驗證的nodejs項目。我已成功獲得authorizationUrl,然後發佈代碼以獲取accessToken。但是,這最後一個響應不會返回instanceUrl。因此,我一直在網上搜索MSDN頁面,瞭解如何使用accessToken獲取正確的組織實例Uri。我試過這個(https://msdn.microsoft.com/en-us/library/mt607485.aspx),只是得到了401個「授權已被拒絕」的迴應。也許我不正確地格式化這個請求?有人可以親切地指導我一些關於如何使用我已經獲得的有效訪問令牌來檢索該用戶的組織實例Uri的文檔嗎?謝謝。使用accessToken獲取Dynamics組織Uri

+0

當我做這個GET https://globaldisco.crm.dynamics.com/api/discovery/v1.0/Instances我得到一個「授權已被拒絕對於這個請求「(JSON)。但是,當我這樣做GET https://globaldisco.crm.dynamics.com/api/discovery/v1.0/Instances(UniqueName='myorg')我得到「服務器錯誤」的響應在HTML中。 – user3287495

回答

0

根據在https://msdn.microsoft.com/en-us/library/mt607485.aspx說明,要求對到https://globaldisco.crm.dynamics.com/api/discovery/v1.0/Instances(UniqueName='myorg'),您需要更換myorg你自己unique name動態CRM服務器的。

您可以參考https://www.dynamics-pros.com/support/kb/kb102033瞭解如何獲取唯一的名稱。

+0

是的,我明顯嘗試使用我的獨特名稱。另外,如上所述,我嘗試過沒有UniqueName,並得到「授權已拒絕此請求」錯誤。想法? – user3287495

+0

[截圖](https://s15.postimg.org/450z847tn/2016_12_01_09_29_25_am.png) – user3287495

1

最近經歷過這個問題,我認爲您可能遇到的問題是請求身份驗證令牌時請求訪問的資源不正確。雖然你會認爲它會是https://globaldisco.crm.dynamics.com/,但我確實已成功使用https://disco.crm.dynamics.com/(確保包含試用斜槓)作爲資源。

如果您的令牌被拒絕,請查看響應頭中的WWW-Authenticate屬性,它將指示您應該請求的資源。與此相似:

Bearer authorization_uri=https://login.windows.net/common/oauth2/authorize, resource_id=https://disco.crm3.dynamics.com/

獲得正確的資源,我能夠查詢全局迪斯科服務沒有問題,即使給予NA迪斯科資源後返回從各地區的情況。這對Azure AD租戶的工作起源於NA以及英國。

我已經在博客這裏全樣本 - http://colinvermander.com/2017/01/19/calling-the-dynamics-global-discovery-service/

+0

這應該被標記爲答案。我試圖使用爲crm url資源獲取的訪問令牌訪問全局發現服務。將資源更改爲https://disco.crm.dynamics.com/以檢索訪問令牌,現在我能夠成功訪問全局發現服務。謝謝! – anderly