5

私がやっていること:

オンライン LMS サービスから API 経由でデータを取得するカスタム プログラムを PHP で作成しています。現在、利用可能なシングル サインオン機能を実装しようとしています。

プログラムのこの部分では、ボタンがクリックされたときに (js または php POST または ? を介して) API への GET 要求を実行し、最終的にユーザーのブラウザーを API からの応答で提供される URL にリダイレクトする必要があります。

API では、XML または JSON 応答を選択できます。私は JSON を使用することを好みますが、必要に応じて XML を使用します。

リクエストの作成に関する API ドキュメントから:

このドキュメントに記載されているすべてのリクエストには、リクエスト ヘッダーに content-type (XML または JSON) を含め、次のベース URI を前に付ける必要があります: https://api.example.com/v1.svc

たとえば、XML 形式でユーザーのリストを取得するための Uri は次のようになります。

コンテンツ タイプ: テキスト/xml

GET https://api.example.com/v1.svc/users?apikey=MY-KEY&source=MY-APP

以下は私が実装しようとしているものです:

ユーザーの LoginKey を取得する方法

サインオンするユーザー ID を取得したら、ユーザーに関する情報を返す /users/{user-id} に対して GET 要求を行う必要があります。これには、ユーザーのブラウザをリダイレクトするために使用できる LoginKey が含まれています。

例えば。

GET https://api.example.com/v1.svc/users/USER-ID?apikey=YOUR_API_KEY&source=sampleapp

API からの応答:

<User>
  <Id>abc12345678</Id>
  <UserName>rich_demo@example.com</UserName>
  <FirstName>Rich</FirstName>
  <LastName>Chetwynd</LastName>
  .....
  <LoginKey>https://demo.example.com/login.aspx?loginkey=xxxzzzyyy777222</LoginKey>
</User>

オブジェクト データは、<LoginKey>最終的にユーザーのブラウザーをリダイレクトする必要がある URL です。

私は API を使用するのが初めてで、投稿する前に作業できなかった大量のメソッドを試しました。これを達成する方法を知っている場合は、知識を共有していただければ幸いです。

ありがとう。

4

1 に答える 1

2

HTML から、<form>これを行う PHP スクリプトへの従来の投稿 (AJAX ではない) を使用します。

if(isset($_POST['userid']))
{
    $userId = (int)$_POST['userid'];

    $obj = simplexml_load_file('https://api.xxx.com/v1.svc/users/' . $userId . '?apikey=YOUR_API_KEY&source=sampleapp');

    if($obj && isset($obj->LoginKey))
    {
        $loginKey = $obj->LoginKey;

        header('Location: ' . $loginKey);
    }
    else
    {
        // failed to load the xml
    }

}

JSON を使用してそれを行いたい場合はfile_get_contents()、URL から生の JSON を取得するために使用でき、次に使用json_decode()してそれをオブジェクトに変換します。

また、AJAX 経由でやりたい場合は、リダイレクトを試みる代わりに PHP で URL をエコーする必要があります。window.location.href = '...'

于 2012-05-08T06:20:27.973 に答える