c# - AdWords 代码在本地主机上工作,但在实时服务器上不工作
问题描述
情况如下:我的代码在本地主机上运行,但是如果我尝试在实时服务器上运行它,我会得到:
System.ArgumentNullException: 值不能为空。\r\n参数名称: 看起来您的应用程序未配置为正确使用 OAuth2。缺少必需的 OAuth2 参数 RefreshToken。您可以运行 Common\\Utils\\OAuth2TokenGenerator.cs 来生成默认 OAuth2 配置。\r\n 在 Google.Api.Ads.Common.Lib.OAuth2ProviderBase.ValidateOAuth2Parameter(String propertyName, String propertyValue)\r\n 在 Google .Api.Ads.Common.Lib.OAuth2ProviderForApplications.RefreshAccessToken()\r\n 在 Google.Api.Ads.Common.Lib.OAuth2ProviderForApplications.RefreshAccessTokenIfExpiring()\r\n 在 Google.Api.Ads.Common.Lib.OAuth2ProviderBase .GetAuthHeader()\r\n 在 Google.Api.Ads.Common.Lib.OAuth2ProviderForApplications.GetAuthHeader()\r\n 在 Google.Api.Ads.Common.Lib.OAuth2ClientMessageInspector.BeforeSendRequest(消息和请求,
问题是我使用 GitHub 在 Azure 上进行部署,所以它应该只获取我需要的所有代码。
我的疯狂猜测是,在某个地方我需要将 URL 包含为有效的 URL,但我现在重新生成了整个密钥生成 3 次,但找不到它。知道我错过了什么吗?
我的代码在这里:
[HttpGet]
public IEnumerable<string> Get(string kword)
{
var user = new AdWordsUser();
using (TargetingIdeaService targetingIdeaService = (TargetingIdeaService)user.GetService(AdWordsService.v201802.TargetingIdeaService))
{
// Create selector.
TargetingIdeaSelector selector = new TargetingIdeaSelector();
selector.requestType = RequestType.IDEAS;
selector.ideaType = IdeaType.KEYWORD;
selector.requestedAttributeTypes = new AttributeType[] {
AttributeType.KEYWORD_TEXT,
AttributeType.SEARCH_VOLUME,
AttributeType.AVERAGE_CPC,
AttributeType.COMPETITION,
AttributeType.TARGETED_MONTHLY_SEARCHES,
AttributeType.IDEA_TYPE,
};
// Set selector paging (required for targeting idea service).
Paging paging = Paging.Default;
selector.paging = paging;
// Create related to query search parameter.
var relatedToQuerySearchParameter = new RelatedToQuerySearchParameter { queries = new String[] { kword } };
var searchParameters = new SearchParameter[] { relatedToQuerySearchParameter };
//searchParameters.Add(relatedToQuerySearchParameter);
var page = new TargetingIdeaPage();
selector.searchParameters = searchParameters;
try
{
page = targetingIdeaService.get(selector);
}
catch (Exception e)
{
return new string[] { e.ToString() };
}
// Display related keywords.
if (page.entries != null && page.entries.Length > 0)
{
foreach (TargetingIdea targetingIdea in page.entries)
{
Dictionary<AttributeType, Google.Api.Ads.AdWords.v201802.Attribute> ideas =
targetingIdea.data.ToDict();
var keyword = (ideas[AttributeType.KEYWORD_TEXT] as StringAttribute).value;
var averageMonthlySearches =
(ideas[AttributeType.SEARCH_VOLUME] as LongAttribute).value;
var averageCpc = (ideas[AttributeType.AVERAGE_CPC] as MoneyAttribute).value;
var competition = (ideas[AttributeType.COMPETITION] as DoubleAttribute).value;
var monthlySearchVolume = (ideas[AttributeType.TARGETED_MONTHLY_SEARCHES] as MonthlySearchVolumeAttribute).value;
var ideaType = (ideas[AttributeType.IDEA_TYPE] as IdeaTypeAttribute).value;
var res1 = "{" +
"keyword: " + keyword +
", volume: " + averageMonthlySearches +
", averageCPC: " + averageCpc?.microAmount +
", competition: " + competition +
//", monthlySearches: " + monthlySearchVolume +
//", ideaType: " + ideaType +
"}";
return new string[] { res1 };
}
}
return new string[] { "test" };
}
}
本地主机上的响应是这样的:
["{keyword: red herring f3ae3846, volume: 4276400, averageCPC: 5647516, competition: 0.305029810905172}"]
这是一个虚拟响应,因为它在开发帐户下。
解决方案
推荐阅读
- angular - ListView 不会一次呈现所有项目
- sql - 使用连接 SQL 更新表的所有行
- twig - 在 Twig 中创建具有变量 Key 的对象
- php - Laravel - 从另一个模型获取模型属性
- c# - MongoDB c#使用定义生成器检索文档内数组中的所有匹配元素
- python - 遵循约定重写代码的困难
- javascript - 类型 'void' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法
- rdf - 个人创建的耶拿在写入文件时没有类
- ios - Swift - 4 - 无法将“__NSCFNumber”(0x10cfb1840)类型的值转换为“NSString”(0x10c0824a8)
- odoo-10 - XMLRPC 搜索 product.template 返回空列表