Windows Live 開発者向けプラットフォームの iOS、PHP、ASP.NET 用サンプル

みなさん、こんにちは。Windows 開発統括部の古内です。

今日も前回に引き続き Windows Live ネタでいきたいと思います。今日ご紹介するのは、2011 年 8 月 1 日に Inside Windows Live Blog へ投稿された 「Developers – introducing our GitHub code sample library with samples for iOS, PHP, ASP.NET and more」 の翻訳で、 7 月 28 日にご紹介した 「Hotmail、Messenger、SkyDrive のデータをモバイル アプリケーションで使用する方法」 のサンプルに、iOS  に対応したものやサーバー側のコードなどが追加されてますます充実、という内容になっています。


開発者向け情報: iOS、PHP、ASP.NET のサンプルが GitHub コード サンプル ライブラリに追加

Windows Live の開発者向けプラットフォームの最新バージョンをリリースして以来、iOS を始めとする一般的なスマートフォンのプラットフォーム向けのコード サンプルや、C# や ASP.NET といったマイクロソフト テクノロジ向けのコード サンプルに対するご要望を数多くいただきました。こうした皆様の声にお応えするため、マイクロソフトは GitHub にコード サンプル リポジトリを作成しました! GitHub では、これまでにも SkyDrive、Messenger、Hotmail のデータをさまざまな種類のアプリケーションに統合するためのコード サンプルを提供しています。

GitHub で提供を開始したのは、以下の幅広いクラスのコード サンプル 3 つです。

  1. モバイル クライアントのサンプル: Silverlight と Objective C で作成された、Windows Phone および iOS プラットフォームを対象とするアプリケーションへのユーザー データの統合方法を提示します
  2. デスクトップのコード サンプル: C# で作成されたアプリケーションへのユーザー データの統合方法を提示します
  3. サーバー側のコード サンプル: ユーザーがアプリケーションに対してユーザー データへの長期間のアクセスを許可している場合 (たとえば、アプリケーションが wl.offline_access スコープを要求する場合) に、サーバー間の呼び出しを使用してユーザー データにアクセスする方法を提示します

モバイル クライアントのサンプル

以前の記事で、SkyDrive のデータを Windows Phone アプリケーションに統合する方法を示す Windows Phone のサンプルについて説明しました。今回は新たに、Hotmail、Messenger、SkyDrive のデータを、iPhone、iPod Touch、iPad 対応アプリケーションに統合する方法を示す iOS のコード サンプルを追加しました。

Windows Phone のサンプルと同様に、まず OAuth 2.0 承認エンド ポイントへの URL を生成して、アプリケーションで使用したいデータへアクセスするために必要となる適切なスコープを要求します。

  1: NSString *OAuthAuthorizeUri =@"https://oauth.live.com/authorize";
  2: //##### をクライアント ID と置き換える 
  3: NSString *ClientID =@"client_id=##########&";
  4: NSString *RedirectURI =@"https://oauth.live.com/desktop";
  5: NSString *Scopes = @"scope=wl.basic%20wl.signin&";
  6: NSString *Display = @"display=touch&";
  7: NSString *ResponseType = @"response_type=token&";
  8:  
  9: - (NSString *) ConstructURI
  10: {
  11:     return [NSString stringWithFormat:@"%@?%@redirect_uri=%@&%@%@%@",OAuthAuthorizeUri,ClientID,RedirectURI,Scopes,Display,ResponseType];
  12:  
  13:     
  14: }
  15:  

ホストされたブラウザー コントロールで URL にアクセスすると、サインイン画面が表示されます。

Windows Live のサインイン画面 (iOS)

サインインに成功すると、アプリケーションが個人データにアクセスすることを許可するか聞かれます。

Windows Live へのアクセス許可を求める画面 (iOS)

アクセスを許可することに同意すると、アプリケーションはユーザー情報にアクセスして情報を表示できるようになります。

ユーザー情報の表示画面 (iOS)

マイクロソフトでは、開発者コミュニティの要望が高ければ、他のモバイル プラットフォーム用のコード サンプルを提供することも検討しています。

デスクトップのコード サンプル

SkyDrive、Messenger、Hotmail のデータをデスクトップ アプリケーションに統合する場合も、モバイル アプリケーションの場合と似たような手順で、アプリケーションで埋め込みのブラウザーをホストし、生成した OAuth 2.0 エンド ポイントにユーザーをナビゲートした後、https://oauth.live.com/desktop にユーザーをリダイレクトするというやり方は同じです。主な違いとしては、モバイル アプリケーションの場合は display パラメーターに "touch" という値を指定してタッチ スクリーン用に最適なエクスペリエンスを提供しようとしますが、デスクトップ アプリケーションの場合はこのパラメーターを指定しません。この違いは、次の URL 生成コードで確認できます。

  1: static string scope = "wl.basic";
  2: static string client_id = "[YOUR_CLIENT_ID]";
  3: private static Uri signInUrl = new Uri(String.Format(@"https://oauth.live.com/authorize?client_id={0}&redirect_uri=https://oauth.live.com/desktop&response_type=token&scope={1}", client_id, scope));
  4:       
  5: public BrowserWindow()
  6: {
  7:      InitializeComponent();
  8:      webBrowser.Navigate(signInUrl);
  9: }

さらに、デスクトップ アプリケーションの場合は通常、ユーザーのサインインやユーザー データへのアクセス許可を求める際に、ポップアップを表示します。これは、モバイル アプリケーションではインライン表示となるのと対照的です。

Windows Live サインインのポップアップ画面

モバイル アプリケーションの場合と同じく、ユーザーが同意すると、アプリケーションは個人情報にアクセスできるようになります。また、このデスクトップのサンプルでは、ウィンドウにアクセス トークンを表示するようにしているので、開発者はこれをコピーして HTTP 要求に貼り付けることによって、さまざまな API 呼び出しを試せるようになっています。たとえばこれを "https://apis.live.net/v5.0/me/picture?access_token=" の後に追加すると、ユーザーのディスプレイの写真を表示することができます。

アクセス トークン ウィンドウの画面

サーバー側のコード サンプル

最後になりましたが、多くの開発者の方から寄せられたご要望にお応えするために、アプリケーションで実際にサーバー間の呼び出しを使用してユーザーの Windows Live データにアクセスする方法を示す、完全なコード サンプルを用意しました。今回は、ASP.NET のコード サンプルPHP のコード サンプル をご提供します。いずれのサンプルも、JavaScript SDK を使って、サインイン ボタンや、クリックするとアプリケーションがユーザー データへのアクセスを許可するための処理を行うような接続ボタンの作成方法を示しています。

ユーザーが同意したときにナビゲートされるリダイレクト URL は、それぞれサーバー側の ASP.NET ページまたは PHP ページに設定されています。

  1: // 以下の値を更新 
  2:    var client_id = "%CLIENT_ID%",
  3:         scope = ["wl.signin", "wl.basic", "wl.offline_access"],
  4:         redirect_uri = "%REDIRECT_URI_PATH%/callback.aspx";

このように、対応する ASP.NET ページまたは PHP ページにリダイレクトされると、ユーザーは API 要求を行うときに使用できるアクセス トークンと、新しいアクセス トークンを要求するときに使用できる更新トークンの両方を取得します。更新トークンは、ユーザーがログインしていないときにアプリケーションがユーザー データにアクセスできるよう、ユーザー データへのオフライン アクセスを要求するために必要になります。アクセス トークンはセキュリティ上の理由から 1 時間後に有効期限が切れるため、アプリケーションは更新トークンを使用して定期的にアクセス トークンを更新する必要があります。

ユーザーのリダイレクトによってサーバー側のコードが呼び出された場合、アプリケーションではアクセス トークンと更新トークンの両方を保存し、これらを使用して、ユーザーがログインしていなくてもユーザー データにアクセスすることができます。

今後のコード サンプルの更新

マイクロソフトでは、今後もより多くのプラットフォームに対応するため、また開発プラットフォームに新機能を追加するのに伴い、このリポジトリにコード サンプルを追加していく予定です。 コード サンプルに対するご意見やご感想をお待ちしています。また、将来のリリースについて詳細な解説を希望される場合は、コメント欄に記載をお願いします。日頃より皆様のサポートに大変感謝しております。今後も引き続き、多くのフィードバックをお寄せくださいますようお願い申し上げます。