我正在尝试使用C#登录Google API和Google Analytics的简单服务账户,但却让自己疲惫不堪。我的公司已经将数据导入Analytics,并且我可以使用他们的Query Explorer查询信息,但在.Net上的入门并没有取得任何进展。根据文档,我正在使用由Google生成的带有PKI的json文件,因为这样的服务账户是计算机之间通信的正确方式。以下是代码片段:
public static GoogleCredential _cred;
public static string _exePath;
static void Main(string[] args) {
_exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Replace(@"file:\", "");
var t = Task.Run(() => Run());
t.Wait();
}
private static async Task Run() {
try {
// Get active credential
using (var stream = new FileStream(_exePath + "\\Default-GASvcAcct-508d097b0bff.json", FileMode.Open, FileAccess.Read)) {
_cred = GoogleCredential.FromStream(stream);
}
if (_cred.IsCreateScopedRequired) {
_cred.CreateScoped(new string[] { AnalyticsService.Scope.Analytics });
}
// Create the service
AnalyticsService service = new AnalyticsService(
new BaseClientService.Initializer() {
HttpClientInitializer = _cred,
});
var act1 = service.Management.Accounts.List().Execute(); // blows-up here
所有代码都能通过编译,但是当执行Execute()
语句时,会抛出一个GoogleApiException
错误:
[无效凭据] 地址[Authorization - header] 原因[authError] 域[全球]
我错过了什么?
Newtonsoft.Json.Linq.JObject cr = (Newtonsoft.Json.Linq.JObject) JsonConvert.DeserializeObject(json); string s = (string) cr.GetValue("private_key");
谢谢你的回答——它帮了我很多。 - robertpbMailKit.Security.AuthenticationException: '334: eyJzdGF0dXMiOiI0M...
",但如果我使用证书就可以了!太好了... - Murphybro2