微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Xero oauth2 运行 listener.GetContextAsync 时程序停止

如何解决使用 Xero oauth2 运行 listener.GetContextAsync 时程序停止

我的程序在运行时拒绝继续
Dim context As Object = Await listener.GetContextAsync() 但继续运行我从另一个表单调用 oauth2() 的下一行。它跳过运行以获取函数中的 Accesstoken 的行。它将显示 Xero organisation selection window,但显示回调 URL 无法在我的网络浏览器上显示

如果我使用 Postman 来测试这个,它会在 Xero 组织选择窗口被点击并卸载后给我一个“身份验证失败 - 无法完成身份验证”错误消息。

欢迎任何帮助。

公共异步函数 oauth2() As Task(Of Boolean)

    Dim redirectUri As String = String.Format(callbackurl)
    Dim listener = New HttpListener()
    listener.Prefixes.Add(redirectUri)

    Try
        listener.Start()
        stopListening = False
    Catch hlex As HttpListenerException
        Return False
    End Try

    Dim urlCallBackFormat As String = WebUtility.UrlEncode(String.Format(callbackurl))
    Dim url As String = "https://login.xero.com/identity/connect/authorize?response_type=code&state=OzEPHd1GSvkwx0fnJ8023A&client_id=" & xeroClientId & "&scope=offline_access%20openid%20profile%20email%20accounting.settings%20accounting.transactions&redirect_uri=" & urlCallBackFormat
    Process.Start(url)

    While listener.IsListening
        Dim context As Object = Public Async Function oauth2() As Task(Of Boolean)
    Dim redirectUri As String = String.Format(callbackurl)
    Dim listener = New HttpListener()
    listener.Prefixes.Add(redirectUri)

    Try
        listener.Start()
        stopListening = False
    Catch hlex As HttpListenerException
        Return False
    End Try

    Dim urlCallBackFormat As String = WebUtility.UrlEncode(String.Format(callbackurl))
    Dim url As String = "https://login.xero.com/identity/connect/authorize?response_type=code&state=OzEPHd1GSvkwx0fnJ8023A&client_id=" & xeroClientId & "&scope=offline_access%20openid%20profile%20email%20accounting.settings%20accounting.transactions&redirect_uri=" & urlCallBackFormat
    Process.Start(url)


    While listener.IsListening
        Dim context As Object = Await listener.GetContextAsync()
        Try
            Await ProcessRequestAsync(context)
            stopListening = True
        Catch ex As Exception
            Console.WriteLine("# EXCEPTION #   " + ex.StackTrace)
        End Try
        If stopListening = True Then listener.Stop()
    End While



        Try
            Await ProcessRequestAsync(context)
            stopListening = True
        Catch ex As Exception
            Console.WriteLine("# EXCEPTION #   " + ex.StackTrace)
        End Try
        If stopListening = True Then listener.Stop()
    End While

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。