5

DotNetOpenAuth 4.1.0.12182 を使用して Facebook と Windows LiveId のユーザー ログインを作成しようとしています。

ただし、ダウンロードの例では、現在のビルドには存在しないDotNetOpenAuth.ApplicationBlockとが使用されています。DotNetOpenAuth.ApplicationBlock.Facebook

代わりにandDotNetOpenAuth.AspNet.Clientsを含む名前空間がありますが、これらの使用方法の例は見つかりません。FacebookClientWindowsLiveClient

例やドキュメントはありますか?

4

2 に答える 2

15

DotNetOpenAuth.OAuth2.WebServerClient から派生した FacebookAuthClient を作成することで、DNOA バージョン 4.1.0.12182、.Net 3.5、および Facebook を相互に連携させることができました。私が見つけた小さな落とし穴の 1 つは、Cookie ベースのセッションを使用している場合、OAuth 機能を使用する前にセッションにアクセスする必要があるということです。これは、DNOA がセッション ID を状態パラメーターとして使用し、セッションにアクセスしたことがない場合、リクエスト間で変更される可能性があるためです。これにより、Facebook から応答が返ってきたときに状態パラメーターの不一致エラーが発生します。

FacebookAuthClient:

public class FacebookAuthClient : DotNetOpenAuth.OAuth2.WebServerClient
{
    private static readonly DotNetOpenAuth.OAuth2.AuthorizationServerDescription Description = new DotNetOpenAuth.OAuth2.AuthorizationServerDescription
    {
        TokenEndpoint = new Uri("https://graph.facebook.com/oauth/access_token"),
        AuthorzationEndpoint = new Uri("https://graph.facebook.com/oauth/authorize")    
    };

    public static readonly string [] ScopeNeeded = { "publish_stream" };

    public FacebookAuthClient()
       : base(Description)

    {
    }
}

Facebook.aspx.cs:

public partial class FacebookPage : System.Web.UI.Page
{
    private FacebookAuthClient _client = new FacebookAuthClient
    {
        ClientIdentifier = ConfigurationManager.AppSettings["FBClientId"], //The FB app's Id
        ClientCredentialApplicator = DotNetOpenAuth.OAuth2.ClientCredentialApplicator.PostParameter(ConfigurationManager.AppSettings["FBClientSecret"]) // The FB app's secret
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        DotNetOpenAuth.OAuth2.IAuthorizationState auth = _client.ProcessUserAuthorization();
        if (_auth == null)
        {
            // Kick off authorization request with the required scope info
            client.RequestUserAuthorization(FacebookAuthClient.ScopeNeeded);
        }
    }
}

これは単なるテスト アプリなので、エラー処理はありませんが、動作するようです。

編集 このすべてに DotNetOpenAuth(unified) NuGet パッケージを使用しました。

編集 ClientCredentialApplicator の作成に欠落していた .PostParameter 呼び出しを追加しました。

于 2012-07-25T19:12:58.860 に答える
1

DNOA の ctp バージョン 3.5 を使用する必要があります。バージョン 4+ は、Facebook が使用する OAuth 2 の後のドラフトで動作するように作成されています。

所有者の GitHub で見つけることができます: https://github.com/AArnott/dotnetopenid

于 2012-07-23T09:38:50.487 に答える