As of today several users are reporting issues with connections from our windows application to MYOB.
I believe it is related to the underlying use of Internet Explorer as a part of the embedded web browser in the application. I can also see another client has reported exactly the same issue. As far as I am aware, this issue has only started today. It appears something has changed in the MYOB web pages that IE does not like.
Hi everyone, I wanted to highlight some brilliant support from Steve_PP that has already helped other developers to overcome this. Please check out their post here which includes example code and instructions. Thank you Steve!
I also would like to highlight the brilliant support from Steve_PP who was amazingly generous with providing source code that enable us to complete the changes for our app.
The developers on this forum, who have provided their knowledge to assist others is what a really good community is about.
Hi All, I've been working though this for several days and I've built a test app (i've built this using example code from the community) using the WebView2 package and still no luck.
Even when I try using Edge I still get an error message as below:
Other times I get and IP Address error message.
I'm trying this on my Dev and other device with the same results, the best I've had so far is edge in that it gave me back a code.
I have tried my test app and I've only ever got back a response with the code in it and off course it had an error.
Below is the code for the form as I can't add the project files....
Public Class frmWebView Private Async Sub frmWebView_Load(sender As Object, e As EventArgs) Handles MyBase.Load txtURL.Text = "https://www.google.com.au" LogMsg($"MS Edge Version: {CoreWebView2Environment.GetAvailableBrowserVersionString()}") ' Initialise. Await wvwMain.EnsureCoreWebView2Async() 'Await InitializeCoreWebView2Async(Path.Combine("C:\Temp", Reflection.Assembly.GetExecutingAssembly().GetName().Name))
If Not String.IsNullOrEmpty(txtURL.Text) Then ' Navigate to URL. WebsiteNavigate(txtURL.Text) End If End Sub
Private Sub frmWebView_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed ' Unsubscribe from CoreWebView2 event(s) (remove event handlers). RemoveHandler wvwMain.CoreWebView2.HistoryChanged, AddressOf wvwMain_HistoryChanged End Sub
Private Sub txtURL_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtURL.KeyPress '// Press ENTER If Asc(e.KeyChar) = 13 Then '// No beep e.Handled = True Try 'wvwMain.CoreWebView2.Navigate(txtURL.Text) '// Or --> wvwMain.CoreWebView2.Navigate(txtURL.Text) wvwMain.Source = New Uri(txtURL.Text) Catch ex As UriFormatException MessageBox.Show("The URL must be fully styled, such as the prefix. http[s]://") Catch ex As Exception MessageBox.Show($"Error: {ex}") End Try End If End Sub
Private Sub wvwMain_CoreWebView2InitializationCompleted(sender As Object, e As CoreWebView2InitializationCompletedEventArgs) Handles wvwMain.CoreWebView2InitializationCompleted LogMsg("wvwMain_CoreWebView2InitializationCompleted") LogMsg($"UserDataFolder: {wvwMain.CoreWebView2.Environment.UserDataFolder.ToString()}") ' Subscribe to CoreWebView2 event(s) (add event handlers). AddHandler wvwMain.CoreWebView2.HistoryChanged, AddressOf wvwMain_HistoryChanged End Sub
Private Sub wvwMain_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles wvwMain.NavigationCompleted MessageBox.Show(wvwMain.Source.ToString()) LogMsg("wvwMain_NavigationCompleted") End Sub
Private Sub wvwMain_WebMessageReceived(sender As Object, e As CoreWebView2WebMessageReceivedEventArgs) Handles wvwMain.WebMessageReceived LogMsg("wvwMain_WebMessageReceived") End Sub
Private Async Function InitializeCoreWebView2Async(Optional userDataFolder As String = "") As Task Dim options As CoreWebView2EnvironmentOptions = Nothing Dim cwv2Environment As CoreWebView2Environment = Nothing
' It's recommended to create the userDataFolder in the same location ' that your other application data is stored (ie: in a folder in %APPDATA%) ' if not specified, we'll create a folder in %TEMP% If String.IsNullOrEmpty(userDataFolder) Then userDataFolder = Path.Combine(Path.GetTempPath(), Reflection.Assembly.GetExecutingAssembly().GetName().Name) End If
' Create WebView2 Environment using the installed or specified WebView2 Runtime version. 'cwv2Environment = Await CoreWebView2Environment.CreateAsync("C:\Program Files (x86)\Microsoft\Edge Dev\Application\1.0.1054.31", userDataFolder, options) cwv2Environment = Await CoreWebView2Environment.CreateAsync(Nothing, userDataFolder, options) ' Initialise. Await wvwMain.EnsureCoreWebView2Async(cwv2Environment) End Function
Private Sub wvwMain_HistoryChanged(sender As Object, e As Object) LogMsg("wvwMain_HistoryChanged") 'btnBack.Enabled = WebView21.CoreWebView2.CanGoBack 'btnForward.Enabled = WebView21.CoreWebView2.CanGoForward ' Update the Address Bar. UpdateAddressBar() End Sub
Private Sub LogMsg(msg As String, Optional addTimestamp As Boolean = True) If addTimestamp Then msg = $"{Now.ToString("yyyy/MM/dd HH:mm:ss.fff")} - {msg}" End If
Debug.WriteLine(msg) End Sub
Private Sub UpdateAddressBar() '' If necessary, update address bar. 'If textBoxAddressBar.Text <> wvwMain.Source.ToString() Then ' textBoxAddressBar.Text = wvwMain.Source.ToString()
' 'move cursor to end of text ' textBoxAddressBar.SelectionStart = textBoxAddressBar.Text.Length ' textBoxAddressBar.SelectionLength = 0 'End If End Sub
Private Sub WebsiteNavigate(ByVal dest As String) If wvwMain IsNot Nothing AndAlso Not String.IsNullOrWhiteSpace(dest) Then ' URL must start with one of the specified strings ' if Not, pre-pend with "https://" If Not dest = "about:blank" AndAlso Not dest.StartsWith("edge://") AndAlso Not dest.StartsWith("file://") AndAlso Not dest.StartsWith("http://") AndAlso Not dest.StartsWith("https://") AndAlso Not System.Text.RegularExpressions.Regex.IsMatch(dest, "^([A-Z]|[a-z]):") Then ' Set Value dest = "https://" & dest End If
' Option 1. 'wvwMain.Source = New Uri(dest, UriKind.Absolute) ' Option 2. wvwMain.CoreWebView2.Navigate(dest) ' Update the Address Bar. UpdateAddressBar() End If End Sub End Class
You seem to be on the right track, but I don't see where you parse "code=..." from the "https://desktop?code=..." URL. It looks like you are treating it like a "normal" URL and opening it in the browser.
The "desktop" URL is what MYOB call the "Redirect URL", which is used to get back to your application after going through the MYOB login screens. When you get the "desktop" URL, instead of browsing to it (which gives the error you posted), you parse the URL to get the "code" value, which is used in subsequent communication with MYOB.
Your screenshot shows the "code" in the redirect URL, Phil_Jeffrey_KC posted an answer that might help you here.
We are back up and running - we had been using the .NET Framework WebBrowser control, and the approach we took was replacing that component with WebView2, which is also a Microsoft component. Grabbed from NuGet and required relatively minimal code changes. You will have a new dependency on having the WebView2 runtime installed on client machines. It is not present on all machines by default.
NathanCranethanks for sharing. I've found an ActiveX Control here that is basically WebView2 inside an ActiveX wrapper. I'm currently trialling it now in an MS Access form. The authentication appears to work, however I then get a message "desktop's server IP address could not be found". MikeG1 , can you confirm if "http://desktop" is still valid as the redirect URI?
Phil_Jeffrey_KCMaybe you're looking at the wrong property? When using WebBrowser the "http://desktop" was in the DocumentText property, after converting to WebView it's in Source.AbsoluteUri.
We are still investigating what can be done, unfortunately it will take us at least several weeks for a solution, I am hoping that MYOB has a better answer tomorrow.
Please see an update on the recent issues that some users of 3rd party apps are experiencing when trying to authenticate to the API.
There are two distinct errors (below):
"Allow Access" page not displaying correctly This is caused by 3rd party apps using unsupported browser versions in their implementations. We have worked to quickly develop and release a patch which should mitigate the issues with the “"Allow Access” button not displaying correctly when authorising a user for an app. This patch will only fix the display issue with the "Allow Access" window and may not fix any issues with redirecting the user back to the app after authentication. These issues are due to an unsupported browser implementation, in which case the developer will need to update their app to support the latest browser version.
App unable to complete the authentication process Some apps are using browser implementations which are no longer supported, impacting the authentication process. The developer will need to update the app to a supported browser version. MYOB recommends using the latest version of your web browser, or at least the previous version.
We apologise for the inconvenience. If you are a developer and require further assistance, please contact API support via the form below:
Hi all MYOB has posted an update today You can read it here For IE10 or IE11 - we have extended the support of integrations but recommend migrating off internet explorer as soon as possible. For IE9 or lower, please update your integration immediately to enable connection to our customers ledgers
So all are clear, as the person who raisd this issue, i DO NOT accept the marked solution so I have removed that tag. So, not only do MYOB wash their hands, they now assume to speak on behalf of their users. I can assure you, you do not.
Whilst we have made the code change required, and btw MikeG1 it was I who told YOU about the software issue so even that is an epic fail from MYOB, we are still weeks away from being able to roll out as its not an internal app, its commercial software that for some strange reason we need to properly test and certify despite MYOB seemingly being able to run amok with their systems.
Hi MikeG1 I think you need to clearly pass on to your leadership team that they have failed significantly in this matter. Forget the 3rd party developers that have been let down and abandoned here. I think you should be more worried about the reputational damage that MYOB now have. Our 100+ MYOB users are over the moon with us for having found a solution for something MYOB caused and then tried to pass the issue to us. Fortunately for us they are not happy with MYOB. MYOB changed something and have caused these clients days of significant stress. Even though we have found and implemented a fix, the software company that we have developed the link for now have to do 80 individual VM installs. At 15 minutes an install you can do the math of lost time they are facing over the next few days. MYOV could have made one small change to allow the existing links to continue to work and then given us a clear warning that on XX date the OAuth browser method will change and provide the developers with the option. My developer NathanCrane spend a few hours researching to find the solution and even more hours testing. This info should have been on the top of MYOB API development teams list of solutions. Hopefully that sharing this has helped a few of the other companies. It has however not helped the reputation of MYOB in this matter.
The issue I have is that my apps used the Microsoft WebBrowser control (IE) to handle the OAuth process. Microsoft has released a new control called the EdgeBrowser control, but this doesn't seem to work with the redirects that happens in OAuth, as it requires a predefined list of trusted domains/URLs. If a URL isn't on the Trusted Domains list, the URL opens in a new default browser window instead of the control.
MikeG1, There must be a workaround for this issue. I have 200+ invoices to export to MYOB and need to pay over 60 Suppliers today by 4 p.m.
I Spent over two hours on the phone with the MYOB Support team to find a workaround, but they could not find a solution. I was told to raise this issue with the API, but I do not have the Developer ID or API key to do so.
Like another user on this Forum, I have been using MYOB software for over 15 years, but I have never felt this helpless. Still waiting for some positive update in next couple of hours.
Hi DilipB , as a user of an external program, your first line of support is with the developer of the add-on. They should already be aware of MYOB's response on this issue, and can advise you what they can/will do about it.
The MYOB support line is generally not up with the technical aspects of integrating addon programs.
Mike, as one of the developers impacted by this, the problem we are facing is zero notification, ownership or support from MYOB who triggered the issue in the first place by seemingly making changes to their AUTH processes without notifying anyone. All we get now is "not our problem". If the MYOB support line is not up with the technical aspects of what is going on with their own product...well, there we are.
I know how helpless you feel, I have all my clients who use our 3rd Party app connecting to their online file that cannot function.
I have in the 20 years of being a MYOB developer partner, never had a major change that would impact 3rd party apps, not be communicated in advance of what is a catastrophic impact to their own MYOB subscription paying end user Clients.
Hey Matiu and LiamM To clarify, MYOB hasn't made a change to invalidate the browser, the browsers have stopped being compatible with our software as Microsoft no longer supports them. The announcement about these old browsers was made by Microsoft on June 15 2022 https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge We wont be able to roll back the update as a result of this
This is a repeat of what you have already said, but prior to that you said there was a change in the AUTH endpoint which MYOB clearly could, and really should, rollback. I've been doing this job for nearly 30 years, I've never come across a company so flipantly break something and then take no action to resolve. Breathtaking.
Hi Trish_LeeLiamMDilipB & Matiu I have an update from our internal team that was investigating this. Thanks for your patience.
This is related to the 3rd party app developers using an old version of IE that has not been supported since 2022. The developers of these apps will need to upgrade to a supported browser in order for services to be restored.
I understand that this is disruptive for your businesses and your customers, but it will be up to the app developers to resolve this for you.
I think this is unacceptable comments and does not help the 3rd party integrators solve a problem that has become significant over the last 2 days.
Our App is in use by over 80+ users who have not been able to send important information to their MYOB.
These businesses are medium to large businesses with large quantities of transactions.
Some of them are already asking the question on who is to blame and who is responsible. From some of the reports coming in, some of these larger clients potentialy will be looking for someone to go after for compensation. May I suggest that someone with authority in the MYOB API development team finds a solution urgently and updates this forum but more importantly all the support tickets that you have on this matter.
Thank you for speaking out, I have had a support ticket in for 23 hours with absolutely no response on it, the only response has been from MikeG1
Mike initially stated it was an issue with the change to the AUTH endpoint and it was being looked into. Now Mike is saying it is all on the developers, who were not even notified that there was a change coming in regard to the AUTH endpoint. Our 3rd Party app uses are in absolute limbo, like you we have a large number of users and the level of communication with MYOB API Development team is deplorable.
We are the Developers of the 3rd Party App impacted by this.
So what you are saying is that that MYOB have made a change that has impacted 3rd Party apps, that there was no communication re the change and all 3rd Party developers must change and redeploy their apps.
Is there any way that MYOB can roll back the change and give 3rd Party app developers a time frame to develop and deploy??????
We are unable to transfer data from TSM to MYOB since yesterday morning.
Our support team from Sydney, GCIT Technology have checked everything and confirmed by The Service Manager, Australia (TSM) that there's a MYOB outage that is affecting TSM accounting links.
Please advise when the issue is going to be resolved as GST submission is on 21 August next week Wednesday.
All purchases and sales transactions for the month of July have not been transferred into MYOB yet.
I have sent message yesterday to Isaiah C, one of MYOB Moderators, but his reply is not forthcoming.
Mike - to confirm, due to an acknowledged change in MYOB you are requesting all third parties rebuild, re-test, re-package, re-certify, and redeploy their applications across their entire user base? This means that MYOB will not be making any further updates in their systems to resolve this?
HI Liam, thats correct, MYOB is unable to keep supporting these browsers and it is up to the 3rd party developers to update to a supported browser. This will not be all 3rd parties, only those who have not already upgraded from an unsupported browser.
Looking for something else?
Search the Community Forum for answers or find your topic and get the conversation started!