在winform webbrowser控件中使用Google for OAuth

时间:2012-11-09 21:28:02

标签: c# winforms browser oauth-2.0

我想使用C#winform中的内置webbrowser控件来使用Google的OAuth对用户进行身份验证。我能找到的所有内容都要求用户通过webbrowser中的登录过程获取访问令牌,然后将该令牌粘贴到我的应用程序中。如何自动获取该访问令牌,以便用户无需复制/粘贴?

1 个答案:

答案 0 :(得分:0)

乔恩, 通常,Bearer令牌作为JSON文档在html-response主体中发回。 例如,来自规范

  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8
  Cache-Control: no-store
  Pragma: no-cache

  {
    "access_token":"mF_9.B5f-4.1JqM",
    "token_type":"Bearer",
    "expires_in":3600,
    "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
  }

如果是这种情况,您可以使用WebBrowser.DocumentCompleted事件获取响应,然后使用JavaScriptSerializer捕获JSON

JavaScriptSerializer jss = new JavaScriptSerializer();
String json = webbrowser.DocumentText
TokenResponse token = jss.Deserialize<TokenResponse>(json);


   public class TokenResponse
    {
        public string access_token { get; set; }
        public string token_type { get; set; }
        public string expires_in { get; set; }
        public string refresh_token { get; set; }
    }