使用Google App Engine时无效和/或缺少SSL证书

时间:2014-06-08 12:21:28

标签: google-app-engine ssl urlfetch

更新:请,如果有人可以提供帮助:Google正在等待其错误跟踪工具上的输入和此问题的示例。如果您有针对此问题的可重现步骤,请在以下网址分享:https://code.google.com/p/googleappengine/issues/detail?id=10937

我尝试使用Google App Engine后端从StackExchange API获取数据。您可能知道,StackExchange的某些API是特定于站点的,要求开发人员针对用户注册的每个站点运行查询。

所以,这是我的后端代码,用于从这些网站获取时间线数据。 feed_info_site变量包含StackExchange站点名称(例如'security''serverfault'等)。

    data = json.loads(urllib.urlopen("%sme/timeline?%s" % 
        (self.API_BASE_URL, urllib.urlencode({"pagesize": 100, 
        "fromdate": se_since_timestamp, "filter": "!9WWBR
        (nmw", "site": feed_info_site, "access_token": 
    decrypt(self.API_ACCESS_TOKEN_SECRET, self.access_token), "key": 
self.API_APP_KEY}))).read())
for item in data['items']:
    ... # code for parsing timeline items

在除Stack Overflow之外的所有站点上运行此查询时,一切正常。有什么奇怪的,当feed_info_site变量设置为'stackoverflow'时,我从Google App Engine收到以下错误:

    HTTPException: Invalid and/or missing SSL certificate for URL: 
https://api.stackexchange.com/2.2/me/timeline?
filter=%219WWBR%28nmw&access_token=
    <ACCESS_TOKEN_REMOVED>&fromdate=1&pagesize=100&key=
<API_KEY_REMOVED>&site=stackoverflow

当然,如果我在Safari中运行相同的查询,我会得到我期望从API获得的JSON结果。所以问题实际上在于谷歌的URLfetch服务。我在Stack Overflow上发现了几个与类似的HTTPS / SSL异常相关的主题,但没有接受的答案解决了我的问题。我尝试删除cacerts.txt个文件。我也尝试用validate_certificate=False拨打电话,但没有成功。

我认为问题与HTTPS / SSL并不严格相关。如果是这样,您如何解释更改单个API参数会使请求失败?

2 个答案:

答案 0 :(得分:1)

  1. 等待应用引擎的下一次更新(预定一次),然后更新。
  2. 将browserid.org/verify替换为其他服务(verifier.loogin.persona.org/verify是Mozilla托管的优质服务,可以使用哪些服务)
  3. 确保cacerts.txt不存在(看起来你已经排序但只是在案例中:-))
  4. 再次尝试 祝好运! -Brendan

答案 1 :(得分:0)

我遇到了同样的错误,谷歌现在更新了应用引擎,错误已解决,请查看更新后的文档。