1

LiveAuthClient の現在のバージョンが壊れているか、セットアップ/構成の何かが壊れているようです。Package Manager Console から LiveSDK バージョン 5.4.3499.620 を入手しました。

私は ASP.NET アプリケーションを開発していますが、問題は、LiveAuthClient クラスに認証に必要なメンバー/イベントがないように見えるため、基本的に使用できないことです。

IntelliSense オートコンプリート

InitializeAsync のスペルも間違っていることに注意してください。

どうしたの?

アップデート:

ASP.NET アプリケーション用の別のバージョンの LiveSDK を入手しましたが、InitializeSessionAsync または ExchangeAuthCodeAsync を試すたびに「ID 1 のキーが見つかりませんでした」という例外が発生します。

https://github.com/liveservices/LiveSDK-for-Windows/issues/3

これは問題を解決する適切な方法ではないと思いますが、現時点では他に選択肢がありません。

4

1 に答える 1

0

私はパーティーに少し遅れましたが、同じ問題 (Live でユーザーを認証する) を解決しようとしてこれに出くわしたので、どうやってそれを機能させたかを説明します。

まず、ASP.NET プロジェクトの正しい NuGet パッケージはLiveSDKServerです。

次に、ユーザー情報の取得は複数ステップのプロセスです。

  1. ユーザーを Live に送信して、アプリが自分のデータにアクセスすることを承認できるようにします (その範囲は、指定した「スコープ」によって決まります)。
  2. アクセス コードを使用してライブ リダイレクトが返されます
  3. 次に、アクセス コードを使用してユーザー情報を要求します。

これはLive SDK ドキュメントでかなり詳しく説明されていますが、すべてをまとめるために、以下に非常に単純な作業例を含めます。トークン、ユーザー データ、例外の管理はユーザー次第です。

public class HomeController : Controller
{
    private const string ClientId = "your client id";
    private const string ClientSecret = "your client secret";
    private const string RedirectUrl = "http://yourdomain.com/home/livecallback";

    [HttpGet]
    public ActionResult Index()
    {
        // This is just a page with a link to home/signin
        return View();
    }

    [HttpGet]
    public RedirectResult SignIn()
    {
        // Send the user over to Live so they can authorize your application.
        // Specify whatever scopes you need.
        var authClient = new LiveAuthClient(ClientId, ClientSecret, RedirectUrl);
        var scopes = new [] { "wl.signin", "wl.basic" };
        var loginUrl = authClient.GetLoginUrl(scopes);
        return Redirect(loginUrl);
    }

    [HttpGet]
    public async Task<ActionResult> LiveCallback(string code)
    {
        // Get an access token using the authorization code
        var authClient = new LiveAuthClient(ClientId, ClientSecret, RedirectUrl);
        var exchangeResult = await authClient.ExchangeAuthCodeAsync(HttpContext);
        if (exchangeResult.Status == LiveConnectSessionStatus.Connected)
        {
            var connectClient = new LiveConnectClient(authClient.Session);
            var connectResult = await connectClient.GetAsync("me");
            if (connectResult != null)
            {
                dynamic me = connectResult.Result;
                ViewBag.Username = me.name; // <-- Access user info
            }
        }

        return View("Index");
    }
}
于 2014-01-07T02:40:29.923 に答える