Windows Phone 7 アプリで Hotmail API を使用したいと考えています。したがって、モバイル アプリへのアクセスを許可する必要があります。私はMicrosoft Live Connect APIを使用してこれを行います。これは、最初は非常にうまく機能します。認証には次のコードを使用します。
string[] requiredScope = { "wl.signin", "wl.calendars_update", "wl.offline_access" };
LiveAuthClient auth = new LiveAuthClient(Configuration.ClientID);
auth.LoginCompleted += new EventHandler<LoginCompletedEventArgs>(authInitializeCompletedHandler);
auth.LoginAsync(requiredScope);
ClientID は、アプリを登録するために MS から取得した ID です。私のコールバックは(簡単に)次のようになります。
private void authInitializeCompletedHandler(object sender, LoginCompletedEventArgs e)
{
if (e.Status == LiveConnectSessionStatus.Connected)
{
this._session = e.Session; // Session hat AccessToken und RefreshToken
this._isAuthorized = true;
callDelegates();
}
}
その呼び出しが成功した場合 (現在は成功しているため、機能します)、取得したセッションを保存します。このセッションを LiveConnectClient コンストラクターで使用して、MS API との通信を有効にすることができます。私のアプリでは Hotmail API です。
LiveConnectClient client = new LiveConnectClient(_session);
私の問題は、アプリが廃棄されてフォーカスが戻ったときに、ユーザーが再度許可を求めないように、そのセッションを何らかの方法で保存したいということです-彼はすでに私にそれを与えました。返されたセッションに AccessToken、RefreshToken、および Expires プロパティが含まれていることがわかりました (それが何であるかはわかっていますが、それは問題ではありません)。今後の通話でその情報をどのように使用できますか? これに関する Microsoft のドキュメントはここで終わりますが、有用な情報は見つかりません。
私が見つけた2つの回避策:
- Live Connect Button : セッション変数を取得するだけで Live Button を表示したくないため、これは適していません。
- RESTful API : これまでに行ったことを完全に書き直す必要があります。これは、すべてが LiveConnectClient に依存しているためです (通信が非常に簡単になります)。
しかし、私は本当にその回避策を使用したくありません。より良い解決策があると信じています/願っています。