为什么在RequestUserAuthorization之后第二次触发Page_Load?

时间:2014-01-07 21:44:48

标签: c# asp.net facebook dotnetopenauth

我正在测试DotNetOpenAuth.Samples解决方案中的“OAuth / OAuth2 / OAuthClient / Facebook.aspx”文件。

这里是代码(直接在PageLoad中从Facebook进行简单身份验证):

namespace OAuthClient {
    using System;
    using System.Configuration;
    using System.Net;
    using System.Web;
    using DotNetOpenAuth.ApplicationBlock;
    using DotNetOpenAuth.ApplicationBlock.Facebook;
    using DotNetOpenAuth.OAuth2;

    public partial class Facebook : System.Web.UI.Page {
        private static readonly FacebookClient client = new FacebookClient {
            ClientIdentifier = ConfigurationManager.AppSettings["facebookAppID"],
            ClientCredentialApplicator = ClientCredentialApplicator.PostParameter(ConfigurationManager.AppSettings["facebookAppSecret"]),
        };

        protected void Page_Load(object sender, EventArgs e)
        {
            IAuthorizationState authorization = client.ProcessUserAuthorization();
            if (authorization == null)
            {
                // Kick off authorization request
                client.RequestUserAuthorization();
            }
            else
            {
                var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken));
                using (var response = request.GetResponse())
                {
                    using (var responseStream = response.GetResponseStream())
                    {
                        var graph = FacebookGraph.Deserialize(responseStream);
                        this.nameLabel.Text = HttpUtility.HtmlEncode(graph.Name);
                    }
                }
            }
        }
    }
}

当Page_Load第一次触发时,authorization == null,所以client.RequestUserAuthorization();调用已执行,然后,Page_load再次触发。

为什么?我不明白机制。

我使用fiddler在“client.RequestUserAuthorization()”之后嗅探facebook发回的响应,但它总是一个空的身体。

我的最终目标是从按钮启动身份验证过程。但是当“client.RequestUserAuthorization();”调用是在一个按钮内执行的,第二次没有触发任何内容......所以授权总是为空。

0 个答案:

没有答案
相关问题