Forum Discussion
Here's my VB.Net version of Steve's module for accessing Auth Code using WebView2
-----------------------------------------------------------------------------------------------------
Module OAuthLogin
Private Const csOAuthServer As String = "https://secure.myob.com/oauth2/account/authorize/"
Private Const csOAuthLogoff As String = "https://secure.myob.com/oauth2/account/LogOff/"
Private Const csOAuthScope As String = "CompanyFile"
Private MyCurrentURI As String = ""
Private MyUrl As String = ""
Private MyAuthCode As String = ""
Private WithEvents webVW2 As New Microsoft.Web.WebView2.WinForms.WebView2
Public Function GetAuthorizationCode_WEB2(config As IApiConfiguration) As String
Try
MyUrl = String.Format("{0}?client_id={1}&redirect_uri={2}&scope={3}&response_type=code", csOAuthServer, config.ClientId, HttpUtility.UrlEncode(config.RedirectUrl), csOAuthScope)
MyCurrentURI = ""
Dim frm As Form = New Form()
frm.ShowIcon = False
webVW2 = New Microsoft.Web.WebView2.WinForms.WebView2
webVW2.Dock = DockStyle.Fill
frm.Controls.Add(webVW2)
webVW2.Source = New Uri(MyUrl)
frm.Size = New Size(800, 600)
frm.ShowDialog()
Return MyAuthCode
Catch ex As Exception
Return MyAuthCode
End Try
End Function
Private Function ExtractAuthorizationCode(ByVal uri As String) As String
Try
Dim uriObj As New Uri(uri)
Dim queryParams = HttpUtility.ParseQueryString(uriObj.Query)
Return queryParams("code")
Catch ex As Exception
Return ""
End Try
End Function
Private Sub webVW2_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles webVW2.CoreWebView2InitializationCompleted
Try
If e.IsSuccess Then
webVW2.CoreWebView2.Navigate(MyUrl)
End If
Catch ex As Exception
End Try
End Sub
Private Sub webVW2_NavigationStarting(sender As Object, e As CoreWebView2NavigationStartingEventArgs) Handles webVW2.NavigationStarting
Try
MyCurrentURI = e.Uri
Catch ex As Exception
End Try
End Sub
Private Sub webVW2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles webVW2.NavigationCompleted
Try
If MyCurrentURI.Contains("code=") Then
MyAuthCode = ExtractAuthorizationCode(MyCurrentURI)
End If
Catch ex As Exception
End Try
End Sub
End Module