РЕЗЮМЕ
У меня есть приложение Vb.net (форма Windows), и мне нужно управлять календарем Google для любого пользователя программного обеспечения. Я думал о том, чтобы иметь доступ пользователя непосредственно из программы, а не аутентифицировать себя для каждой операции в календаре
Я пробовал метод OAuth2, но он не очень удобен для пользователя. Я должен войти прямо из приложения и без файлов JSON.
ЧТО Я ПОПЫТАЛ
Я занимаюсь разработкой программного обеспечения со встроенным Календарем Google.
Я не эксперт по API Google, поэтому, выполнив поиск в Интернете, мне удалось пройти проверку подлинности с помощью файла credentials.json, который напрямую создает Google.
На данный момент программа работает так: нажимаю кнопку «Войти»; автоматически открывает страницу входа в Google в браузере; Я ввожу электронную почту и пароль на официальной странице входа в Google; Я получаю доступ; Я вручную закрываю страницу браузера; Я возвращаюсь к программе, где msgbox предупреждает меня об успешной аутентификации.
Public scopes As IList(Of String) = New List(Of String)()
Public service As CalendarService
Function LoginGoogle()
scopes.Add(CalendarService.Scope.Calendar)
Dim credential As UserCredential
If Directory.Exists("C:\credentials") Then
Try
Directory.Delete("c:\credentials", True)
Catch
MsgBox("Error! Can't delete folder 'credentials'")
End Try
Using stream As New FileStream("credentials.json", FileMode.Open, FileAccess.Read)
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets, scopes, "user", CancellationToken.None,
New FileDataStore("c:\credentials")).Result
End Using
Dim initializer As New BaseClientService.Initializer()
initializer.HttpClientInitializer = credential
initializer.ApplicationName = "Carpedia" ' app's name
service = New CalendarService(initializer)
Return 0
Else
Using stream As New FileStream("credentials.json", FileMode.Open, FileAccess.Read)
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets, scopes, "user", CancellationToken.None,
New FileDataStore("c:\credentials")).Result
End Using
Dim initializer As New BaseClientService.Initializer()
initializer.HttpClientInitializer = credential
initializer.ApplicationName = "Carpedia" ' app's name
service = New CalendarService(initializer)
Return 0
End If
End Function
Что бы мне понравилось
Я хотел бы создать форму для ввода адреса электронной почты и пароля; нажмите на кнопку входа в систему; входить автоматически без использования браузера.
Пример: https://youtu.be/FW9_gCD8vVg?t=15 (минута 0:18)
Как я могу это сделать?
Заранее спасибо.