【发布时间】:2021-04-21 11:05:47
【问题描述】:
如何使用 asp.net 处理 Xero 回调错误
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-core asp.net-web-api xero-api
如何使用 asp.net 处理 Xero 回调错误
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-core asp.net-web-api xero-api
看起来您的重定向 URI 缺少 localhost 端口号可能存在问题。我建议检查您的重定向 URI 以确保它与您正在运行项目的本地主机端口匹配。
如果端口正确,当您在用户取消授权后尝试使用 Xero 客户端请求访问令牌时,您很可能会遇到不同的异常:
var xeroToken = (XeroOAuth2Token)await client.RequestAccessTokenAsync(code);
( ArgumentException: Parameter is required (Parameter 'code') )
这是因为当授权被取消时,您不会在请求中收到代码参数,而是在回调中添加了一个错误参数。 (error=access_denied)
您可以通过检查回调方法中的错误参数来处理此错误。
var error = HttpContext.Request.Query["error"].ToString();
if (error == "access_denied")
{
//handle the error - redirect back to main/login screen with a message?
}
希望这个回答对你有帮助。
【讨论】:
您是否阅读过 Xero-NetStandard 存储库的自述文件?
首先您需要通过授权 URL 发送用户
return Redirect(client.BuildLoginUri());
然后,当它们返回时,您将临时 code 交换为有效的 token set,其中将包含 access_token 和 refresh_token。
【讨论】: