【问题标题】:Google OAuth-orization without a browser没有浏览器的谷歌 OAuth-orization
【发布时间】:2017-08-16 17:51:41
【问题描述】:
using (var stream =
                new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

here 中的这段代码处理应用程序的身份验证并保存用户凭据文件。

但是,它使用浏览器来执行此操作。我在某处读到,谷歌不再支持检查原始用户名和密码,而是让用户通过浏览器登录。

我可以不在我的 C# 应用程序中嵌入浏览器,并在此处完成身份验证,而不是烦人地打开浏览器吗?

【问题讨论】:

    标签: c# oauth-2.0 google-drive-api google-oauth


    【解决方案1】:

    OAuth 是一种授权协议,而不是一种身份验证机制。 Google 的身份验证始终在浏览器中完成,并且不再支持嵌入式浏览器。见https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

    有一些解决方案可以避免每次都通过浏览器提示用户。具体来说,您可以使用服务帐户(创建一个新的 Google 帐户作为代理 - 请参阅 https://developers.google.com/identity/protocols/OAuth2ServiceAccount)或请求并保存刷新令牌(类似于保存用户名/密码,但特定于所需的 Google服务,例如驱动器 - 请参阅How do I authorise an app (web or installed) without user intervention? (canonical ?))。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 1970-01-01
      • 2016-01-22
      • 2014-06-24
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 1970-01-01
      相关资源
      最近更新 更多