C# 无法使用Google API更新GTM变量
使用GTM API文档中的“Try it!”功能: 我能够从GTM获得一个包含变量的列表 但是,当我尝试更新变量()时,再次使用“try it!”,我得到: 我非常确定我正确地插入了所有参数,经过一天的尝试,我认为GTM的更新变量API有问题 有人能确认更新GTM变量对他们有效吗 我还尝试从后端执行此操作,并弹出相同的响应 这是我的密码:C# 无法使用Google API更新GTM变量,c#,.net,google-api,oauth-2.0,google-tag-manager,C#,.net,Google Api,Oauth 2.0,Google Tag Manager,使用GTM API文档中的“Try it!”功能: 我能够从GTM获得一个包含变量的列表 但是,当我尝试更新变量()时,再次使用“try it!”,我得到: 我非常确定我正确地插入了所有参数,经过一天的尝试,我认为GTM的更新变量API有问题 有人能确认更新GTM变量对他们有效吗 我还尝试从后端执行此操作,并弹出相同的响应 这是我的密码: public void Authenticate() { string serviceAccountEmail = "xxxxxxxxxxx
public void Authenticate()
{
string serviceAccountEmail = "xxxxxxxxxxxx@local-proj.iam.gserviceaccount.com";
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();
从后端获取GTM中的所有变量。一切正常
但当我尝试更新一个时:
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)
{
}
变量gTMVar=新变量();
gTMVar.Name=“IsAfterSignUpSuccess”;
gTMVar.Type=“c”;
var param=新参数()
{
Type=“template”,
Value=“true”
};
gTMVar.Parameter=新列表();
gTMVar.Parameter.Add(参数);
尝试
{
var newVar=service.Accounts.Containers.Variables.Update(主体:gTMVar,accountId:“xxx”,containerId:“xxx”,variableId:“x”).Execute();
}
捕获(例外情况除外)
{
}
每次给我请求都失败了。我尝试了不同的参数,不同类型的变量,但没有任何帮助。还尝试了不同的作用域来初始化服务-没有任何帮助
关于这个主题的信息不多,尤其是对于c
我在这里发布了我的代码——希望这能挽救一些人的生命,因为在没有用户交互的情况下,从后端验证服务并不是一件简单的事。(最终证明很简单)如果您试图更新该值,则请求中的参数必须有3个属性:
类型:您试图编辑的类型,
键:值,
价值:你的价值 网址:
参数:
{
"name":"YOUR_VARIABLE_NAME",
"type":"YOUR_VARIABLE_TYPE",
"parameter":[{
"type":"YOUR_TYPE",
"key":"value",
"value":"YOUR_VALUE"
}]
}
TagManagerAPI的文档中有一些遗漏,并且几乎没有可用的帮助。
大多数指南都关注GUI,Simo Ahava在他的示例中主要使用Python
最好的,
Cika你解决了这个问题吗?我在awct标签上也遇到了类似的问题,虽然每个设置和参数都完全正确,但它仍然返回400个错误请求,在自定义html中效果很好,我完全复制了字典中建议的设置,但似乎没有任何效果。我最终放弃了此集成,据我所知,它主要用于管理容器本身,而不是从后端处理事件或其他内容。
{
"name":"YOUR_VARIABLE_NAME",
"type":"YOUR_VARIABLE_TYPE",
"parameter":[{
"type":"YOUR_TYPE",
"key":"value",
"value":"YOUR_VALUE"
}]
}