使用 REST API 的 Moxtra 集成

Posted

技术标签:

【中文标题】使用 REST API 的 Moxtra 集成【英文标题】:Moxtra Integration Using REST API 【发布时间】:2014-11-11 07:22:58 【问题描述】:

我的基于 Web 的应用程序需要基于 SAML SSO 的身份验证。 Moxtra 提供基于 SAML SSO 的身份验证,例如:

 <script type="text/javascript"src="https://www.moxtra.com/api/js/moxtra-latest.js" id="moxtrajs"
 data-client-id="CLIENT-ID" data-app-key="IDP-ENTITY-ID" data-org-id="ORG-ID"></script>

我可以生成如下令牌

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>
<script type="text/javascript">// <![CDATA[
    var client_id = "xxxxxxxxxx";
    var client_secret = "yyyyyyyyyy";
    var timestamp = new Date().getTime();
    var uniqueid = "user-unique-identity";

    var hash = CryptoJS.HmacSHA256(client_id + uniqueid + timestamp, client_secret);
    var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
    var signature = hashInBase64.replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, '');
// ]]></script>

function get_token() 
    var in_options = 
        uniqueid: uniqueid,
        timestamp: timestamp,
        signature: signature,
        get_accesstoken: function(result) 
            alert("access_token: " + result.access_token + " expires in: " + result.expires_in);
        ,
        error: function(result) 
            alert("error code: " + result.error_code + " message: " + result.error_message);
        
    ;
    Moxtra.setup(in_options);

现在我需要所有活页夹、聊天选项、时间线选项、通过 REST API 会面选项。 在 moxtra 上,他们提供 here

所以在生成访问令牌后,我以类似的方式尝试在 c# 代码中获取所有活页夹,但它显示 401 Unauthorized。

我的代码如下:

  string url = "https://api.moxtra.com/me/binders?" + Token + "HTTP/1.1";
            HttpWebRequest GETRequest = (HttpWebRequest)WebRequest.Create(url);
            GETRequest.Method = "GET";
            HttpWebResponse GETResponse = (HttpWebResponse)GETRequest.GetResponse();
            Stream GETResponseStream = GETResponse.GetResponseStream();
            StreamReader sr = new StreamReader(GETResponseStream);

有人可以提供帮助吗?

附: (通过 REST API 需要一切)

【问题讨论】:

【参考方案1】:

从上面的代码看来,您正在尝试使用唯一 ID + 签名方法而不是 SAML SSO 进行 SSO。您可以在 https://developer.moxtra.com/moxo/docs-authentication/ 找到有关 Moxtra 支持的身份验证方法的更多详细信息

由于您使用基于唯一 id + 签名的方法进行身份验证,因此您不需要传递 data-app-key 和 data-org-id

<script type="text/javascript"src="https://www.moxtra.com/api/js/moxtra-latest.js" id="moxtrajs" data-client-id="CLIENT-ID"></script>

关于您关于错误 401 的问题,看起来访问令牌参数未在 GET 请求中正确传递

您需要在请求中将访问令牌作为参数传递为“access_token=[访问令牌值]”。

【讨论】:

以上是关于使用 REST API 的 Moxtra 集成的主要内容,如果未能解决你的问题,请参考以下文章

使用 paypal/rest-api-sdk-php 的 laravel paypal 集成错误

技术派:谁说API网关只能集成REST APIs?

Omnipay:贝宝 REST API 集成

Woocommerce Paypal REST api 与 React JS 的集成

使用 Rest API Gateway lambda 集成 CORS 问题进行放大

使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要 card 参数