'Marvel API returns Invalid Credentials

I'm using Marvel API.

I set up timestamp, apikey and hash(ts+privateKey+apiKey).md5

// ts
let ts = String(Date().timeIntervalSince1970)

// apiKey
"cfd8392fa89be1a574b402a9c54f9c52"

// privateKey
"d3ea745cf73f7a7278e1368ffe3b50f4bdb2746"

I tested using Postman.But A Response is always 401 Invalid Credentials.

/// URL
https://gateway.marvel.com:443/v1/public/characters?ts=1649942740.2140222&apikey=cfd8392fa89be1a574b402a9c54f9c52&hash=d9a73e6105271137942b5ea743ae2ad2
{
    "code": "InvalidCredentials",
    "message": "That hash, timestamp and key combination is invalid."
}

And I already set up an authorized referee with *(asterisk) at My Developer Account - Marvel

Please help me. I don't know what I missed.



Solution 1:[1]

Convert the timestamp, private and public key to md5 hash. Then use that for the query string.

import CryptoKit


let ts = String(Date().timeIntervalSince1970)
let hash = MD5(string:"\(ts)\("PRIVATE_KEY")\("PUBLIC_KEY")")


func MD5(string: String) -> String {
    let digest = Insecure.MD5.hash(data: string.data(using: .utf8) ?? Data())
    return digest.map {
        String(format: "%02hhx", $0)
    }.joined()
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 cole