4

ASP.NET mvc 4 アプリケーションで、 設定したAccount/ExternalLoginを実装しようとしましたが、

  1. マイクロソフト(Windows Live)、
  2. ClientID と ClientSecret を使用し、GoogleOpenAuth を有効にした Facebook では、残念ながら何も機能していません。

    Url call: provider=microsoft& sid =95b923de889e4a4db6861c98fafb42a3&code=f85770b1-266b-3abd-4c46-8d62fe3014dc">http://mydomain.com/account/externallogincallback? provider =microsoft& sid =95b923de889e4a4db6861c98fafb42a3&code=f85770b1-266b-3abd-4c46-8d62fe3014dc

    AuthenticationResult 結果 = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));

すべての OpenAuth 呼び出しが失敗し、Google は認証 false を返し、Facebook と Microsoft (Windows Live) は 400 の不正な要求応答を返します。

誰でもこれを解決する方法を提案できますか?

詳細:これらは私が使用したDLLです

  1. C:\Users\UserName\Documents\Visual Studio 2012\Projects\myProject\packages\DotNetOpenAuth.AspNet.4.0.3.12153\lib\net40-full\DotNetOpenAuth.AspNet.dll
  2. C:\Users\UserName\Documents\Visual Studio 2012\Projects\myProject\packages\DotNetOpenAuth.Core.4.0.3.12153\lib\net40-full\DotNetOpenAuth.Core.dll
  3. C:\Users\UserName\Documents\Visual Studio 2012\Projects\myProject\packages\DotNetOpenAuth.OAuth.Core.4.0.3.12153\lib\net40-full\DotNetOpenAuth.OAuth.dll
  4. C:\Users\UserName\Documents\Visual Studio 2012\Projects\myProject\packages\DotNetOpenAuth.OpenId.Core.4.0.3.12153\lib\net40-full\DotNetOpenAuth.OpenId.dll
  5. C:\Users\UserName\Documents\Visual Studio 2012\Projects\myProject\packages\DotNetOpenAuth.OpenId.RelyingParty.4.0.3.12153\lib\net40-full\DotNetOpenAuth.OpenId.RelyingParty.dll

Web.config

 <compilation debug="true" targetFramework="4.5" >
      <assemblies>
        <add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </assemblies>
    </compilation>

問題が見つかりました:よくわかりました。アプリケーションの開始時にトリガーされるカスタム関数があり、完全な URL を小文字に強制し、OAuth トークンが Facebook にコールバックされると、トークン値も小文字になり、問題が発生していました。 . 私はそれを見つけることができてうれしい:)

4

1 に答える 1

1

実際のコードを見ずに原因がわからない場合は、RequestAuthentication()に渡すリターンURLがVerifyAuthentication()に渡すものとまったく同じであることを再確認してください。

于 2012-11-27T17:34:08.673 に答える