没有浏览器的Google OAuth-orization

时间:2017-03-23 23:00:49

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

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#应用​​程序中嵌入浏览器,并在此处完成身份验证,而不是烦人地打开浏览器吗?

1 个答案:

答案 0 :(得分: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 ?))。