Python Instagram:签名不匹配
我正在尝试开始使用Instagram API,但我甚至不能进行简单的调用,因为我遇到了一个错误Python Instagram:签名不匹配,python,instagram,instagram-api,Python,Instagram,Instagram Api,我正在尝试开始使用Instagram API,但我甚至不能进行简单的调用,因为我遇到了一个错误 {"code": 403, "error_type": "OAuthForbiddenException", "error_message": "Invalid signed-request: Signature does not match"} 我生成了我的access\u令牌,范围为likes+comments 这是我的网址: 我从Instagram开发者网站上用这个脚本生成了签名,因为它最初
{"code": 403, "error_type": "OAuthForbiddenException", "error_message": "Invalid signed-request: Signature does not match"}
我生成了我的access\u令牌
,范围为likes+comments
这是我的网址:
我从Instagram开发者网站上用这个脚本生成了签名,因为它最初给了我
"Invalid signed-request: Missing required parameter 'sig'"
以下是脚本:
# -*- coding: UTF-8 -*-
import hmac
from hashlib import sha256
def generate_sig(endpoint, params, secret):
sig = endpoint
for key in sorted(params.keys()):
sig += '|%s=%s' % (key, params[key])
return hmac.new(secret, sig, sha256).hexdigest()
endpoint = 'media/search'
params = {
'access_token': _______________,
'count': 10,
}
secret = ______________________
sig = generate_sig(endpoint, params, secret)
print "sig is",sig
感谢您的帮助!
感谢来自文档的:
启用时,Instagram将检查每个传感器的sig参数
请求并验证该值是否与使用
客户机密。预期值是使用SHA256散列的HMAC
使用所有请求参数和客户端密码的算法
您的签名生成器函数可以,但它不包括所有参数。应该是:
params = {
'access_token': _______________,
'count': 10,
'lat': "<lat value>",
'lng': "<long value>",
}
它应该为我们提供如下格式的URL:
https://api.instagram.com/v1/media/search?access_token=XXX&lat=XXX&lng=XXX&sig=XXX&count=XXX
从文档:
启用时,Instagram将检查每个传感器的sig参数
请求并验证该值是否与使用
客户机密。预期值是使用SHA256散列的HMAC
使用所有请求参数和客户端密码的算法
您的签名生成器函数可以,但它不包括所有参数。应该是:
params = {
'access_token': _______________,
'count': 10,
'lat': "<lat value>",
'lng': "<long value>",
}
它应该为我们提供如下格式的URL:
https://api.instagram.com/v1/media/search?access_token=XXX&lat=XXX&lng=XXX&sig=XXX&count=XXX
我认为
'count':10
参数不应该在签名生成中传递,因为它不存在于url中。根据Insta doc->Token:API端点,该端点附加了请求参数的所有键/值对的串联,按键升序排序。每个键/值对由管道字符分隔。因此,要么将计数添加到API请求URL中,要么将其从签名生成参数中删除,否则仍会出现“无效签名请求”错误@谢谢你的回答。我试过了,但还是不行。它给了我相同的“无效签名请求:签名不匹配”错误。@coderz我也试过了。我将其从参数中删除,并将其添加到我的URL:。但是,它仍然给我同样的错误@Arjun您是否启用了“已签名的请求”?另外,您能提供完整的错误消息信息吗?@felipsmartins错误消息是:{“代码”:403,“错误类型”:“OAuthBankedenException”,“错误消息”:“无效签名请求:签名不匹配”},我取消了“强制签名请求”复选框,现在我可以获取数据了。我认为“count”:10
参数不应该在签名生成中传递,因为它不存在于url中。根据Insta doc->Token:API端点,该端点附加了请求参数的所有键/值对的串联,按键升序排序。每个键/值对由管道字符分隔。因此,要么将计数添加到API请求URL中,要么将其从签名生成参数中删除,否则仍会出现“无效签名请求”错误@谢谢你的回答。我试过了,但还是不行。它给了我相同的“无效签名请求:签名不匹配”错误。@coderz我也试过了。我将其从参数中删除,并将其添加到我的URL:。但是,它仍然给我同样的错误@Arjun您是否启用了“已签名的请求”?另外,您能提供完整的错误消息信息吗?@felipsmartins错误消息是:{“代码”:403,“错误类型”:“OAuthBankedenException”,“错误消息”:“无效的签名请求:签名不匹配”}此外,我取消了“强制签名请求”的复选框,现在我可以获取数据了。