Использование «Попробуйте!» функция из документации GTM API: https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/variables/list?authuser=2 Я могу получить список моих переменных из GTMНевозможно обновить переменную GTM с помощью API Google
Однако, когда я пытаюсь обновить переменную (https://developers.google.com/tag-manager/api/v1/reference/accounts/containers/variables/update?authuser=2), опять же с помощью «! Попробуйте», я получаю:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidArgument",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Я уверен, что правильно вставляю все параметры, и после одного дня попыток я предполагаю, что что-то не так с GTM Update Variable API.
Может ли кто-нибудь подтвердить, что обновление переменной GTM работает для них?
Кроме того, я стараюсь сделать это из внутреннего и одного и того же ответа всплывающих окон.
Вот мой код:
public void Authenticate()
{
string serviceAccountEmail = "[email protected]";
string folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage/key.p12");
var certificate = new X509Certificate2(folder, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { TagManagerService.Scope.TagmanagerEditContainers}
}.FromCertificate(certificate));
// Create the service.
var service = new TagManagerService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "My Local Proj"
});
На данный момент сервис с проверкой подлинности, так что я могу просто сделать:
var myGTMVars = service.Accounts.Containers.Variables.List("AccountID", "ContainerID").Execute();
Чтобы получить все мои переменные от ГТМ с фоновым. Все работает так, как ожидалось.
Но когда я пытаюсь обновить один:
Variable gTMVar = new Variable();
gTMVar.Name = "IsAfterSignUpSuccess";
gTMVar.Type = "c";
var param = new Parameter()
{
Type = "template",
Value = "true"
};
gTMVar.Parameter = new List<Parameter>();
gTMVar.Parameter.Add(param);
try
{
var newVar = service.Accounts.Containers.Variables.Update(body: gTMVar, accountId: "xxx", containerId: "xxx", variableId: "x").Execute();
}
catch (Exception ex)
{
}
он не каждый раз, давая мне BadRequest. Я пробовал разные параметры, разные типы для переменных и ничего не помогал. Также попробовал разные области для запуска службы - ничего не помогло.
Существует плохая информация по этому вопросу, особенно для C#.
Я разместил здесь свой код - надеюсь, что он спасет чей-то день, поскольку он не был прямым для аутентификации службы из-за отсутствия взаимодействия с пользователем. (Ну в конце концов, это оказалось легко)
Вам удалось решить эту проблему? У меня аналогичная проблема с тегом awct, в то время как все настройки и параметры в точности верны, он по-прежнему возвращает 400 Bad Request, в пользовательском html он отлично работает, я скопировал именно эту настройку, рекомендованную в словаре, но ничего не работает , –