2

Desire2Learn Valence API には、サーバー アプリケーション用の非対話型認証フローがありますか? Valence のドキュメントでは、認証アプリケーションが対話型のクライアント プロセスであると想定しているようです。

4

3 に答える 3

4

実際には、サイトに非対話的にログインすることでこれを実現しました。このルートを試す場合は、必ずd2lSecureSessionVal、d2lSessionVal、およびLogin Cookieを取得して、後続のリクエストに追加してください。

リクエスト1:1> POST http {s}://elearning.test.masked.edu/d2l/lp/auth/login/login.d2l 1>コンテンツタイプ:application / x-www-form-urlencoded userName = {あなたのユーザー名}&password={あなたのパスワード}

応答1:

1 < Set-Cookie: LoginKey=; expires=Sat, 01-Jan-2000 05:00:00 GMT; path=/
1 < Set-Cookie: d2lSecureSessionVal=masked; path=/; HttpOnly  <-- grab this
1 < Set-Cookie: Login=true; path=/   <-- grab this
1 < Set-Cookie: d2lSessionVal=masked; path=/   <-- grab this

このリクエストでは、ターゲットはそれほど重要ではないことに注意してください。リクエスト2:2> GET http {s}://elearning.test.masked.edu:443 / d2l / auth / api / token?x_a = ZNsxGYZuSmasked&x_b = 7jkhCKfEmaked&x_target = https%3A%2F%2Fwww.maked.edu 2> Cookie:d2lSecureSessionVal = masked; d2lSessionVal=マスク; Login = true;

ターゲットサイトにリダイレクトしようとします。リダイレクトを無視してください。x_aはあなたが本当に求めているものです。

応答2:

2 < 302
2 < X-AspNet-Version: 2.0.50727
2 < Date: Tue, 09 Oct 2012 14:03:45 GMT
2 < Content-Length: 248
2 < X-XSS-Protection: 0
2 < Location: http{s}://www.masked.edu?x_a=DxHmasked&x_b=aQVkg-7jkhCKfEmaked&x_c=IfLBcKYFf8masked
2 < Set-Cookie: TS50cdf6=masked; Path=/
2 < Content-Type: text/html; charset=utf-8
2 < X-Powered-By: ASP.NET
2 < Cache-Control: private
2 < 

この応答からx_aを取得し、リクエストでx_bとして使用します

特定のホストからのリクエストを許可するチェックボックスを表示するページがあるため、初めてはバガーです。認証トークンリクエストを取得して、ブラウザにポップしました。常に許可するチェックボックスをオンにすると、問題なく動作します。

また、認証トークンがときどき期限切れになることにも注意してください。そのためにコーディングし、それが発生したときに再認証するようにしてください。

于 2012-10-09T14:49:09.823 に答える
3

ログイン後にブラウザにユーザーキーが表示されるPHPサンプルコードの入門サンプルコードを使用して、作成した「サービスアカウント」のキーを取得しました。

次に、これらをPHPクラスに入れて、再利用して接続を確立します。だから私のコードでは、私は呼び出すことができます

$authcontext = d2l::connect();

それは本当に魅力のように機能します。

于 2012-10-11T14:56:41.517 に答える
0

これは、ここにある質問に多少関連しています。

Desire2Learn REST API と SOAP の認証方法

Valence API では、インタラクティブな認証ステップが発生する必要がありますが、これは非インタラクティブなアプリの「インストール時」に行うことができます。その過程の結果が「長く」使える鍵です。

一部のバージョンおよびサービス パック レベルでは、これは 30 日でしたが、「期限切れにならないようにする」ことができます。今後は「期限切れにならない」がデフォルトであると予想されますが、インスタンスで 30 日に設定されている場合は、サポート リクエストを作成して変更することができます。

于 2012-05-08T22:04:06.087 に答える