Я пытаюсь использовать авторизацию на стороне сервера API Google Analytics с помощью С#, код выглядит следующим образом
public ActionResult Dashboard()
{
ViewBag.Message = "Dashboard.";
var scopes = new string[]
{
AnalyticsService.Scope.Analytics, // view and manage your Google Analytics data
AnalyticsService.Scope.AnalyticsReadonly,
AnalyticsService.Scope.AnalyticsEdit
};
const string serviceAccountEmail = "[email protected]ccount.com";
const string keyFilePath = @"D:\key.p12";
var status = RequestAccessTokenAsync(keyFilePath,scopes,serviceAccountEmail);
ViewBag.Token = _accessToken;
return View();
}
private async Task<bool> RequestAccessTokenAsync(string certificateFile, string[] scope, string serviceAccount)
{
var certificate = new X509Certificate2(certificateFile, "notasecret", X509KeyStorageFlags.Exportable);
var serviceAccountCredential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccount)
{
Scopes = scope
}.FromCertificate(certificate));
var status = await serviceAccountCredential.RequestAccessTokenAsync(CancellationToken.None);
if (status)
_accessToken = serviceAccountCredential.Token.AccessToken;
return status;
}
Создание экземпляра службы отлично работает, а также может извлекать необработанные данные, но нам нужно использовать API-интерфейс Embed, и проблема в том, что в _accessToken нет значения, и нам нужно, чтобы иметь возможность доступа к встроенным API.
Любые идеи/мысли будут полезны.
На демонстрационном сайте google представлен пример для python - https://ga-dev-tools.appspot.com/embed-api/server-side-authorization/