Google Content API for Shopping - 凭据在本地运行良好,但在实时服务器上运行不正常

时间:2013-10-31 21:46:33

标签: c# asp.net authentication google-api

我从以下网站获取了示例代码:

https://developers.google.com/shopping-content/developers-guide-dotnet

ContentForShoppingService service = 
    new ContentForShoppingService("ContentForShopping-Sample");
service.setUserCredentials(GoogleUsername, GooglePassword);

service.AccountId = GoogleAccountID;

我还使用了来自https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/contentforshopping_sample/contentforshoppingsample.cs?r=1067

的示例代码

我正在使用Google Merchant电子邮件地址/密码和上面的商家ID。然后我使用以下方式找到我们的产品之一:

entry = service.Get("en", "gb", ProductID);

这在我的本地服务器上运行正常。然后,我可以通过操作其属性来更新产品,然后调用:

service.Update(entry);

现在,问题是当我在我们的实时服务器上运行它时,它失败了:

Exception Details: 
    Google.GData.Client.InvalidCredentialsException: Invalid credentials

在一台PC上而不在另一台PC上使用相同凭据的原因是什么?

我应该使用其他方法提交凭据吗?我发现替代方法令人困惑,我找不到其他专门用于ContentForShoppingService的示例代码。

  • 本地PC正在运行Windows 7
  • 有问题的实时服务器正在运行Windows Server 2008 R2

更新

我已经使用了相同的代码并将其放在Windows窗体应用程序中。除了我们使用的实时服务器之外,此应用程序在我尝试过的所有其他计算机上运行良好。这会让我觉得这是某种安全软件/防火墙问题......

有什么想法吗?!

2 个答案:

答案 0 :(得分:2)

我有完全相同的问题,我通过启用两步验证解决了这个问题。在文章here

中提到

总结一下这篇文章,转到:

  1. https://support.google.com/accounts/answer/180744
  2. 启用2步验证
  3. 输入您的信息
  4. 输入您的应用名称
  5. 生成您的应用密码
  6. 在您的代码中替换您的密码
  7. 祝你好运:)

答案 1 :(得分:1)

通过以下方式解决了这个问题:

https://security.google.com/settings/security/activity?hl=en_GB

Google似乎试图了解您的应用可以使用哪些IP地址。尽管我说被阻止的地址很好,但它们仍被阻止。

enter image description here

解决方案是转到实时服务器,在那里打开浏览器,然后在那里登录Google帐户。由于您是在该IP地址实际登录,因此Google知道该地址不可疑。