0

我正在根据 xero 文档断开与 xero 的连接,该文档是撤销连接并删除连接的组织并且两个 api 都工作正常。但是当我断开连接并再次单击连接时,它仍然记得以前连接的组织,并且没有显示组织的 xero 页面,它会将我重定向回我的应用程序,我现在已连接。

但我希望 xero 显示它的页面,我可以在其中选择我想要的组织。现在我正在从浏览器中删除 XeroIdentity cookie。这是一个好方法,因为它现在向我显示登录页面?如果不是,请建议我这样做。

这是我断开连接的代码

  public async Task<JsonResult> RemoveConnection(string token, string Id)
    {
        try
        {
            if (Id == null)
            {
                return Json("Please connect with Xero first");
            }   
       
            else
            {
                var accessToken1 = "";
                var tenantId1 = "";
                var token1 = await _tokenStore.GetAccessTokenAsync(Id);

                accessToken1 = token1.AccessToken;
                var restclient1 = new RestClient("https://identity.xero.com/connect/revocation");
                var request1 = new RestRequest(Method.POST);
                string encoded = base64encode(Configuration["xero:clientid"] + ":" + Configuration["xero:clientsecret"]);
                request1.AddHeader("authorization", string.Format("basic {0}", encoded));
                request1.AddHeader("content-type", "application/x-www-form-urlencoded");
                request1.AddParameter("application/json",string.Format("token={0}", accessToken1),ParameterType.RequestBody);
                var response1 = restclient1.Execute(request1);
                var connections1 = await _xeroClient.GetConnectionsAsync(token1);
                foreach (var connection in connections1)
                {

                    accessToken1 = token1.AccessToken;
                    tenantId1 = connection.id.ToString();
                    var restClient = new RestClient("https://api.xero.com/connections/" + tenantId1 + "");
                    var request = new RestRequest(Method.DELETE);
                    request.AddHeader("Authorization", string.Format("Bearer {0}", accessToken1));
                    var response = restClient.Execute(request);
                    var x = response.Content;
                    var connections12 = await _xeroClient.GetConnectionsAsync(token1);
                }
         
                var details = new { Result = "Disconnected", Status = "Ok" };
                return Json(details);
            }
        }
        catch (Exception ex)
        {
            return Json(ex.Message);
        }
    }
4

0 回答 0