当前位置: 首页 > 知识库问答 >
问题:

Instagram API强制签名请求+无效签名-请求:签名不匹配

贺君浩
2023-03-14
string GenerateSignature(string endpoint, 
         Dictionary<string, string> parameters, string secret) {

    StringBuilder message = new StringBuilder(endpoint);

    foreach (var param in parameters.OrderBy(p => p.Key))
    {
        message.AppendFormat("|{0}={1}", param.Key, param.Value);
    }

    return HMACSHA256_Hash(secret, message.ToString());
}

string HMACSHA256_Hash(string secret, string message)
{
    // Create a HMAC-SHA256 digest of the message using the secret key
    HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
    byte[] digest = hmac.ComputeHash(Encoding.UTF8.GetBytes(message.ToString()));

    // Return the digest as a hexstring to be used as a signature for the request
    return ByteArrayToString(digest);
}

string ByteArrayToString(byte[] array)
{
    // Convert the bytes in the array to a lower-case hexstring
    return array.Aggregate(new StringBuilder(), (sb, b) => sb.Append(b.ToString("x2"))).ToString();
}
protected void GetUserDetails()
{
    string instagram_Username = "";
    string instagram_UserID = "";
    string instagram_AccessToken = "";
    string instagram_ClientID = "";
    string instagram_ClientSecret = "";

    int count = 1;

    string url = String.Format(@"https://api.instagram.com/v1/users/{0}/media/recent?client_id={1}&count={2}", instagram_UserID, instagram_ClientID, count);
    string endPoint = String.Format("/users/{0}/media/recent", instagram_UserID);

    Dictionary<string, string> endPointParameters = new Dictionary<string, string>();
    endPointParameters.Add("client_id", instagram_ClientID);
    endPointParameters.Add("count", count.ToString());

    string signature = GenerateSignature(endPoint, endPointParameters, instagram_AccessToken);
    url = url + "&sig=" + signature;
}

我很感激你的帮助!多谢

共有1个答案

韩烈
2023-03-14
string signature = GenerateSignature(endPoint, endPointParameters, instagram_ClientSecret);
 类似资料:
  • 我试图上传一个图像使用预先签名的网址 我得到了一个类似的url https://s3.eu-west-1.amazonaws.com/bucket/folder/access.JPG?AWSAccessKeyId=xxxx 我已经尝试上传文件与内容类型图像/jpg,多部分/表单数据。 尝试生成没有文件类型和上传的网址。 尝试了放后法 但似乎什么都不管用 错误总是: 我们计算的请求签名与您提供的签名

  • 我正试图上传一张使用AWS S3 SDK的图片。现在,这以前是有效的,但由于某种原因,它停止了工作,我开始得到这个错误: 现在,当我点击链接时,它会给我一个'NoSuchKey'错误: 我真的不明白这一点,因为我的键实际上只是一个字符串。我也试图上传一些东西,所以显然关键不会存在-我正在努力上传它! 另一个教程来自一个博客,我没有它的链接,但我上面的代码与文档中的这个教程相同。我所做的只是把它移到

  • 我试图生成签名的URL来上传和下载我的S3 bucket中的对象,但它失败了,“SignatureDoesNotMatch”如下所示。 我明白这是这里描述的问题的症状 而且,是的,我的桶存在。我怎么能用这个水落石出呢?

  • 我想将用户配置文件图片存储在S3桶中,但保留这些图片的私密性。为了做到这一点,我正在创建一个预先签名的网址,每当图像是必需的。然而,这每次都会创建一个独特的网址,这意味着浏览器永远不会缓存图像,最终我会在GET请求中支付更多。 下面是生成url的代码示例,我使用的是Laravel: 我认为,通过指定日期时间而不是时间单位,它将创建相同的url,但实际上会将剩余秒数添加到url,下面是一个示例: x

  • 我有不同的对象来生成保存在S3中的文件。每个对象调用以下函数来保存文件。 我只有以下几个问题。对象要么总是保存文件,要么永远无法保存文件。 错误是 我们计算的请求签名与您提供的签名不匹配。检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅REST身份验证和SOAP身份验证。(服务:S3,状态代码:403,请求ID:79b6c0a2-0d74-1f30-a4bf-246e9631ccd8,扩

  • 我试图按照教程HTTP://docs.aws.amazon.com/amazons3/latest/api/sigv4-post-example.html使用HTTP post方法将图像上传到s3 bucket。但我每次都得到以下错误 政策如下: 生成策略和签名的代码将粘贴到相关的表单字段中: