OpenId - 如何使用checkid_immediate和x-has-session?

时间:2011-09-13 09:40:49

标签: c# silverlight openid google-openid

文档没有说明这两个参数。我知道他们以某种方式与登录状态检查有关。

我想检查用户当前是否已登录浏览器(含义,使用google登录,并选中“让我登录”)

我希望能够区分状态:

  1. 用户已登录浏览器(表示已登录Google for 例如,选中“让我登录”)并且该用户已经 已批准我的应用。

  2. 任何其他州。 (用户未登录。用户已登录,但有 身份他还没有批准......等等。)

  3. 如果我知道我处于第一状态,我不需要“显示”弹出窗口(我给它顶部= 9999左= 9999)

    我试图用这段代码弄清楚这两个状态。这需要完成,无需任何用户交互或任何视觉提示。

    public partial class WebForm1 : System.Web.UI.Page
        {
            protected string Url { get; set; }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                var parameters = new Dictionary<string, string>();
    
                parameters.Add("openid.ns", "http://specs.openid.net/auth/2.0");
                parameters.Add("openid.claimed_id", "http://specs.openid.net/auth/2.0/identifier_select");
                parameters.Add("openid.identity", "http://specs.openid.net/auth/2.0/identifier_select");
                parameters.Add("openid.return_to", "http://localhost:17556/redirect.aspx");
                parameters.Add("openid.realm", "http://localhost:17556/");
                parameters.Add("openid.mode", "checkid_immediate");
                parameters.Add("openid.ns.ax", "http://openid.net/srv/ax/1.0");
                parameters.Add("openid.ax.mode", "fetch_request");
                parameters.Add("openid.ax.type.email", "http://axschema.org/contact/email");
                parameters.Add("openid.ax.required", "email");
                parameters.Add("openid.ns.ui", "http://specs.openid.net/extensions/ui/1.0");
                parameters.Add("openid.ui.mode", "x-has-session");
    
                string OpenIdEndpoint = https://www.google.com/accounts/o8/ud;
    
                var url = CreateUrlRequest(OpenIdEndpoint, parameters);
    
                WebClient wc = new WebClient();
                var res = wc.UploadString(url, "");
            }
    
    
            public string CreateUrlRequest(string i_Url, Dictionary<string, string> i_Parameters)
            {
                return string.Format("{0}?{1}", i_Url, string.Join("&", i_Parameters.Select(kvp => string.Format("{0}={1}", kvp.Key, kvp.Value)).ToList()));
            }
        } 
    

    运行此代码,回调发送到redirect.aspx,但查询字符串没有关于我感兴趣的状态的任何信息。它包含openid.mode = setup_needed等。

0 个答案:

没有答案