4

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 に依存しているためです (通信が非常に簡単になります)。

しかし、私は本当にその回避策を使用したくありません。より良い解決策があると信じています/願っています。

4

1 に答える 1

6

これに対する答えは次のように見えます

  1. アプリケーションに wl.signin スコープと wl.offline_access スコープの両方が含まれていることを確認してください。

  2. SDK で提供されているサインイン コントロールを使用していない場合は、アプリの起動時に常に LiveAuthClient.InitializeAsync を呼び出す必要があります。InitializeAsync が有効なセッションを返さない場合にのみ、LiveAuthClient.LoginAsync を呼び出します。

これらの手順により、更新トークンを確実に受け取ることができるため、初回以降はログインや同意を求める必要がありません。

から: http://social.msdn.microsoft.com/Forums/en-US/messengerconnect/thread/6df1f31d-a22c-469c-b9f4-5c79e0882701

于 2013-04-10T00:18:18.413 に答える