【发布时间】:2017-10-10 15:27:58
【问题描述】:
我尝试用 C# 实现 Web 服务以从 Google Analytics 检索数据。 当我在本地计算机上尝试它时它可以工作,但是当我将它发布到服务器时出现异常。 我在 Google Analytics 控制台上创建了一个项目,并下载了生成的 client_secret json。 我在我的应用程序的根路径上上传了 json,并将 client_secret.json 文件上的 Build Action 设置为 Content 并将 Copy to Output Directory 设置为 Copy(如果更新)。 这是我执行身份验证的代码:
static async Task<UserCredential> GetCredential()
{
try
{
string jsonPath = HttpContext.Current.Server.MapPath("~/client_secret.json");
HttpContext.Current.Response.Write(jsonPath);
using (var stream = new FileStream(jsonPath, FileMode.Open, FileAccess.Read))
{
const string loginEmailAddress = "my@emailaddress.com";
return await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { AnalyticsReportingService.Scope.Analytics },
loginEmailAddress, System.Threading.CancellationToken.None,
new FileDataStore("GoogleAnalyticsApiWebService")
);
}
}
catch (Exception ex)
{
HttpContext.Current.Response.Write("\n" + ex.Message);
return null;
}
}
当我尝试在本地执行时,它可以正常工作,当我在服务器上发布并从 UTL 调用它时出现异常:
对路径“GoogleAnalyticsApiWebService”的访问被拒绝。Google.Apis.Requests.RequestError 请求缺少所需的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。
有人可以帮助我吗?谢谢
【问题讨论】:
-
某事让我相信问题出在这里:
string jsonPath = HttpContext.Current.Server.MapPath("~/client_secret.json");你确定这是你的凭证 json 文件所在的正确路径吗? -
我觉得不是这个问题,我查了一下,路径是正确的
标签: c# json web-services google-analytics