程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题

开发过程中遇到通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题的问题如何解决?下面主要结合日常开发的经验,给出你关于通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题的解决方法建议,希望对你解决通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题有所启发或帮助;

我是使用 Oauth2 进行身份验证的新手,希望有人可以就如何使用 oauth2 gem 正确执行身份验证以获取 Microsoft Dynamics 令牌提供一些指导。

我已经能够通过 Postman 授权和获取令牌,但是由于这些类型的应用程序极大地促进了整个过程,因此很难将这些内容映射到代码中,尤其是当概念是新的时。

对于访问令牌,我可以使用:

  • 身份验证 URL,格式为“https://login.windows.net//authorize?resource=https://API.businesscentral.dynamics.com
  • 访问令牌 URL,格式为“https://login.windows.net//oauth2/token?resource=https://API.businesscentral.dynamics.com”
  • clIEnt_ID
  • clIEnt_secret

我已经在网上尝试了各种示例,但我从 oauth2 收到了一个非描述性错误,例如:

OAuth2::Error():

或者,在其他情况下,更特别的东西:

OAuth2::Error ({"code"=>"requestDataInvalID","message"=>"请求数据无效。"}: {"error": {"code": "requestDataInvalID","message": "请求数据无效。"}}):

有没有人有任何关于如何成功获得令牌的真实可行的例子?

解决方法

终于破解了。

必须分别将资源元素移出身份验证和访问令牌网址:

https://login.windows.net/<CUSTOMER_IDENTIFIER_HASH>/authorize
https://login.windows.net/<CUSTOMER_IDENTIFIER_HASH>/oauth2/token

那时,我将客户端设置为:

client = OAuth2::Client.new(
      client_id,client_secret,site: base_url,grant_type: "client_credentials",resource: "https://api.businesscentral.dynamics.com",authorize_url: auth_url,token_url: token_url,) 

上面的base_url是:

https://api.businesscentral.dynamics.com/v2.0/<CUSTOMER_IDENTIFIER_HASH>

然后,我调用客户端以获取 auth_code 并且必须显式传递资源参数:

client.auth_code.authorize_url(:redirect_uri => 'http://localhost:8080/oauth2/callBACk',resource: "https://api.businesscentral.dynamics.com")

我不确定获取token时是否需要资源,但最终我是这样获取的:

token = client.password.get_token(<AUTHENTICATION_LOGIN>,<AUTHENTICATION_PASS>,resource: "https://api.businesscentral.dynamics.com")

然后我可以使用令牌来执行获取命令:

token.get('https://api.businesscentral.dynamics.com/v2.0/Sandbox/api/v2.0/companies(<COMPANY_ID_HASH>)/customers',:headers => { 'Accept' => 'application/json' })

我有一种感觉,我必须对最终 get 命令的 url 进行一些清理,但它似乎是这样工作的。

大佬总结

以上是大佬教程为你收集整理的通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题全部内容,希望文章能够帮你解决通过 Rails Oauth2 gem 建立 Ouath2 与 Microsoft Dynamics 的连接时遇到问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。