2

文档并没有详细说明这两个参数。我知道它们在某种程度上与登录状态检查有关。

我想检查用户当前是否登录了浏览器(意思是用谷歌登录,并选中“让我登录”)

我希望能够区分状态:

  1. 用户已登录浏览器(例如,使用 Google 登录,然后选中“保持登录状态”)并且该用户已经批准了我的应用程序。

  2. 任何其他状态。(用户未登录。用户已登录但其身份尚未批准......等)

如果我知道我处于第一个状态,我不需要“显示”弹出窗口(我给它 top=9999 left=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 等。

4

0 回答 0