4

次の 2 つのことを実行できるようにする PHP スクリプトを作成しようとしています。

  1. ユーザーが自分の Hotmail (今は「ライブ」と呼ばれていると思いますか?) アカウントを使用して、Web サイトに対して自分自身を認証できるようにします

  2. 認証されたユーザーの連絡先リストを Hotmail から取得します。

上記の 2 つのことを行うために変更/拡張できる少なくとも実用的な例を探して、過去 6 時間インターネットをトロールしました。たとえば、ここSOで尋ねられた同様の質問が数十あります-提供された回答はどれも機能しなくなりました(確かに、いくつかの質問は数年前のものでした)。

私は Microsoft のサイトを試し、最新バージョンの API をダウンロードしましたが、これはかなり驚くべき速さで進化しているようです。私は最終的に、廃止されていない (まだ?) API を突き止めることができました。

指示に従い、認証を試みたところ、努力に対して次のメッセージが表示されました。

We're unable to complete your request
Windows Live ID is experiencing technical difficulties. Please try again later.

私はすぐにデモのオンライン版を試してみましたが、おそらく当然のことながら、それは魅力的なものでした.

余談ですが、私は OPEN API を使用して、Yahoo と GMail に同じ機能をそれぞれ 1 時間以内で実装することができました。さて、すべてのプロプライエタリなものに対する私のあくなき憎しみ (申し訳ありませんが Microsoft にしてください) が、ここでの筋書きを少し失わせている可能性があります。

実際に (2012 年に) 次のことを可能にする PHP の実用的なサンプルを入手できた人はいますか?

  1. Hotmail (ライブ?) ユーザー認証
  2. Hotmail ユーザーの連絡先メールの取得

コード スニペット、またはそのようなスニペットを見つけることができる場所へのリンクがある場合は、これまでのところ、PHP 経由で Microsoft Live API を操作しようとして午後全体を無駄にしてきたので、非常に役立ちます。

PS: いいえ、OpenInviter には興味がありません。壊れています。

4

3 に答える 3

1

サービスプロバイダーごとに単一の配列に基づいて、独自の oauth ライブラリを作成しました。この配列には、認証の実行とユーザー データの取得に必要なすべてのデータが含まれています。msdn (つまり、hotmail、outlook、xbox、msn) に使用する配列は次のとおりです。

$msdn = array
(
  'oauth_version'              => '2',
  'oauth_method'               => 'GET',
  'redirect_user_params'       => array
  (
    'url'                      => 'https://oauth.live.com/authorize',
    'response_type'            => 'code',
    'http_params'              => array
   (
     'url',
     'client_id',
     'redirect_uri',
     'response_type',
     'scope',
     'state'
   )
 ),
 'obtain_access_token_params'  => array
 (
   'url'                       => 'https://oauth.live.com/token',
   'grant_type'                => 'authorization_code',
   'http_params'               => array
   (
     'url',
     'client_id',
     'client_secret',
     'code',
     'grant_type',
     'redirect_uri',
     'scope'
    )
  ),
  'scope'                      => 'wl.signin wl.basic',
  'obtain_user_data_params'    => array
  (
    'url'                      => 'https://apis.live.net/v5.0/me',
    'http_params'              => array
    (
      'url',
      'access_token',
      'scope'
    )
  ),
  'client_id'                  => 'xxxxx', // = oauth_consumer_key in oauth 1.0 lingo
  'client_secret'              => 'xxxxxxxxxxxxxxx',
  'readme_url'                 => 'http://msdn.microsoft.com/en-us/library/live/hh243647.aspx'
);

3 つの oauth ステージ (つまり、「ユーザーのリダイレクト」、「アクセス トークンの取得」、および「ユーザー データの取得」) のそれぞれのパラメーターは、http_params配列内にあります。msdn の場合、これらのパラメーターは、curl で送信する URL のクエリ クエリ文字列になります (msdn は POST ではなく GET のみを受け入れるため)。

scopeユーザーの連絡先アドレス帳を取得しようとしたことはありませんが、これは、必要な追加情報で要素を拡張する場合にすぎません (ここに文書化されていますhttp://msdn.microsoft.com/en-us/library/live/ hh243646.aspx )。http_params配列からわかるように、scopeパラメーターは 3 つの oauth ステージのそれぞれで使用されます。

于 2012-11-18T01:24:40.123 に答える
0

CloudSponge テスト ドライブで Hotmail/MSN/Live インポートを試して、それが期待どおりのユーザー エクスペリエンスであるかどうかを確認してください。

それが機能する場合は、ウィジェットまたは API を使用できます。API を使用する場合は、便利なPHP ラッパーが既に作成されています。

于 2012-11-13T21:25:43.023 に答える
0

www.domain.com のみを入力すると、この問題が発生する場合は、コールバック URL が http:// であることを確認してください。

于 2013-05-04T06:33:32.497 に答える