まず最初に。私は完全な OAuth 初心者です。これは私の最初の刺し傷であり、物事は毛むくじゃらになっています...
Durandal & Web API を使用してシングル ページ アプリケーションを作成しています。ユーザーは、任意のソーシャル ネットワークを使用してログインできる必要があります。私はデータベースにまったくアクセスできません。サーバー側で消費する保護されていないサードパーティの Web サービスを呼び出す必要があり、OAuth を使用して保護する必要があります。
だから私は、Facebookのコントロール/ボタンを使用してログインを生成するソリューションにファイルを追加することができました(新しいMVC4 Webアプリケーションを作成し、すべての認証関連ファイル、更新されたブートストラッパーなどを手動でコピーして貼り付けました..)、コードはほとんどの部分で機能するようです。
Facebookがリダイレクトするとき
[AllowAnonymous]
public ActionResult ExternalLoginCallback(string returnUrl)
{
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(this.Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if (!result.IsSuccessful)
{
return this.RedirectToAction("ExternalLoginFailure");
}
if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
{
return this.RedirectToLocal(returnUrl);
}
//code removed for brevity ....
}
次の行を実行しようとすると、指定されたエラーが発生します。
OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)
データベースがないため、コントローラから [InitializeSimpleMembership] 属性を削除しました。
これがこれまでで最もばかげた質問である場合は、ご容赦ください。しかし...
ログインに失敗するのはなぜですか? その時点で、アプリは Facebook にログインしようとしているのではなく、なぜデータベースが必要なのですか? または、使用しているWebサービスでのログイン/承認呼び出しで、そのコードセクションを削除/置換できると言っているのは正しいですか?