对 Instagram 帖子方法进行签名 API 调用以关注用户、点赞用户的图像等。用户每小时的关注次数限制为 20 次。但如果我们进行签名 API 调用,那么用户每小时可以进行 60 次关注。我的问题是如何进行签名 API 调用?
我按照 Instagram http://instagram.com/developer/restrict-api-requests/ 上的描述尝试了这种方法,并启用强制标头。并发送了具有有效 ID 的
X-Insta-Forwarded-For
标头字段,但在 20 后仍然遵循它显示极限错误。谁能帮助我如何进行签名 API 调用?
搜索完我的问题后,通过制作我的应用程序签名应用程序来解决我的问题:
要为 Instagram 用户进行签名 API 调用,需要选中其 insta 应用程序中的两个复选框。在管理客户下。并且必须遵循 隐式 OAuth 授权流程。
对于所有关注/点赞帖子类型请求,用户需要添加一个标头: 类型为
X-Insta-Forwarded-For
-> [IP information]|[Signature]
IP 应该是应用程序负载均衡器检测到的客户端远程 IP; 签名为 ,应用具有 SHA256 的 HMAC,并在此处附加签名的十六进制表示形式。在
IP address
作为数据,使用您的 clientSecret
作为键。
然后使用管道 |
连接 IP 信息和签名,并将其设置为标头字段的值。
我使用以下代码来生成签名:
-(NSString *)signWithKey:(NSString *)key usingData:(NSString *)data
{
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
return [[HMAC.description stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];
}
-(NSString*)getheaderData
{
NSString *ipString = [self fetchMyIP];
NSString *signature = [self signWithKey:kClientSecret usingData:ipString];
}
To set header in iOS: [request setValue:[self getheaderData] forHTTPHeaderField:@"X-Insta-Forwarded-For"];
因此 API 调用将作为签名 API 调用发送。