gpt4 book ai didi

.net - bit.ly 从 Azure 网站访问时登录无效

转载 作者:行者123 更新时间:2023-12-03 04:51:39 24 4
gpt4 key购买 nike

我开发了一个 ASP.NET MVC Web 应用程序,可以访问 bit.ly缩短网址。我使用了 .NET NuGet 库 Bitly.Net正如 Bit.ly Code Reference 中提到的那样.

在我的本地计算机上,无论是在单元测试中还是在本地运行 Web 应用程序时,一切都运行良好。但是,当我将其部署到 Azure 时,它​​失败了。不幸的是 Bitly.Net 没有给出有用的错误反馈,但如this SO answer表明自己编写很容易,所以我就这么做了。

现在调用 shorten command我收到错误代码 500,错误文本显示“无效登录”。

我正在使用折旧的身份验证方法,但查看 documentation on shorten确实说我可以使用该身份验证方法,并且它在本地工作,所以事实并非如此。我可以切换到新的 OAuth 身份验证,但我认为它也会有同样的问题。

有人从 Azure 访问过 bit.ly API 吗?可以CORS是一个问题?如有任何建议,我们深表感谢。

最佳答案

好吧,我实际上给 bit.ly api 支持人员发送了电子邮件 ( [email protected] ),他们很友善地回来了,他们说:

An INVALID_LOGIN error indicates either you provided an incorrect ‘login’ or incorrect ‘apiKey’ parameter.

奇怪的是,我通过记录“login”和“apiKey”参数并从 Azure 下载 web.config 来检查它们。然而,bit.ly 支持人员建议我使用 fixed OAuth Token (有关更多信息,请阅读链接页面上以粗体显示的顶行)。

这允许您获取一次 token ,然后在所有请求中使用它,这使得使用 OAuth 变得容易。 我切换到 OAuth,它成功了!

如果这对某人有用,这里是代码,based on @devfunkd implementation但更新为:

  • 使用固定的 OAuth token 进行验证。
  • 使用 bit.ly 的 V3 API,它具有更好的 json 格式。
  • 它使用 Json.NET json 反序列化器。
  • 我将其设为异步。

请注意,在代码中,字段 _bitlyToken 应包含通过访问 this page 创建的 token 。 。 _logger 变量保存一个记录器,以便记录错误。

public async Task<string> ShortenAsync(string longUrl)
{
//with thanks to @devfunkd - see https://stackoverflow.com/questions/31487902/nuget-package-for-bitly-to-shorten-the-links

var url = string.Format("https://api-ssl.bitly.com/v3/shorten?access_token={0}&longUrl={1}",
_bitlyToken, HttpUtility.UrlEncode(longUrl));

var request = (HttpWebRequest) WebRequest.Create(url);
try
{
var response = await request.GetResponseAsync();
using (var responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream, Encoding.UTF8);
var jsonResponse = JObject.Parse(await reader.ReadToEndAsync());
var statusCode = jsonResponse["status_code"].Value<int>();
if (statusCode == (int) HttpStatusCode.OK)
return jsonResponse["data"]["url"].Value<string>();

//else some sort of problem
_logger.ErrorFormat("Bitly request returned error code {0}, status text '{1}' on longUrl = {2}",
statusCode, jsonResponse["status_txt"].Value<string>(), longUrl);
//What to do if it goes wrong? I return the original long url
return longUrl;
}
}
catch (WebException ex)
{
var errorResponse = ex.Response;
using (var responseStream = errorResponse.GetResponseStream())
{
var reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
var errorText = reader.ReadToEnd();
// log errorText
_logger.ErrorFormat("Bitly access threw an exception {0} on url {1}. Content = {2}", ex.Message, url, errorText);
}
//What to do if it goes wrong? I return the original long url
return longUrl;
}
}

我希望对某人有所帮助。

关于.net - bit.ly 从 Azure 网站访问时登录无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com