Microsoft Face API抱怨坏密钥,但密钥在控制台中工作?

时间:2016-05-02 02:21:08

标签: python face-recognition microsoft-cognitive

我一直试图解决这个错误,但我找不到似乎错误的东西。

我正在使用Microsoft Cognitive Services Face API python。这是我的代码:

import requests
import json
import http.client, urllib, base64, json

body = {"URL": "http://www.scientificamerican.com/sciam/cache/file/35391452-5457-431A-A75B859471FAB0B3.jsdfpg" }

headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "xxx"
}

try:

    r=requests.post('https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender',json.dumps(body) , headers)
    print(r.content)
except Exception as e:
    print(format(e))

当我运行脚本时,我得到:

"code":"Unspecified","message":"Access denied due to invalid subscription key. Make sure you are subscribed to an API you are trying to call and provide the right key."

问题是,当我在console上放置完全相同的密钥时,一切正常。所以我很确定这不是关键。

错误必须在我的代码上,但我找不到它。

任何正确方向的提示都将受到赞赏, 感谢

1 个答案:

答案 0 :(得分:3)

错误在于您符合 request.post 调用的方式。此函数的参数是位置的,如此另一个post中所述,因此标题不作为标题传递,因此无法识别键。如果指定每个参数是什么,则将避免此错误。那就是:

r=requests.post('https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender',params=None, data = json.dumps(body), headers = headers)   

此外,图片的网址并未指向有效的JPEG文件(扩展名为乱码,可能是拼写错误)。