Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How To Send timeStamp and md5 hash for Marvel Api request

I'm trying to run a call to Marvel Api however the return I'm having is code = 401 Unauthorized, this is due to not being able to send the timeStamp and hash parameters correctly.

the url base is http://gateway.marvel.com/v1/public/ -> my url is being: = http: //gateway.marvel.com/ v1 / public / characters? name = wolverine & apikey = XXX & ts = 2019-04-06% 2013: 09: 10.272 & hash = [B @ afad7ce8] In the documentation it is described that I need to send these parameters: Params: {    "apikey": "your api key",    "ts": "a timestamp",    "hash": "your hash" } I need help to generate the ts and hash correctly. Note: hash = ts + apiKey + publicKey

var ts = Timestamp(System.currentTimeMillis())
var hash = getHash(ts.toString())

fun getHash(ts: String): ByteArray? {
        val byte = ts.toByteArray() + API_KEY.toByteArray() + PUBLIC_KEY.toByteArray()
        val md = MessageDigest.getInstance("MD5")

        return md.digest(byte)
    }
like image 714
Eduardo Rafael Moraes Avatar asked Sep 03 '25 07:09

Eduardo Rafael Moraes


1 Answers

You should not put your private key in code (it's bad practice and usually with this key you can do CRUD operations with API and even drop some parts of database).

Get your Marvel public key (for example 1234), your private key(for example abcd) and choose timestamp (for example 1564731162583).

Go to website https://passwordsgenerator.net/md5-hash-generator/ put your strings like 1564731162583abcd1234 (timestamp + private key + api key without spaces). You will get (with parameters from example) hash: B5936DEBCC1A252C679D2D3E5361B6C0

One more important thing: when you add this hash in your api call, timestamp have to be the same as in hash (previously chosen example 1564731162583) and also MD5 hash have to be in lowercase. This is important.

Hope it will help :)

like image 151
Peter Staranchuk Avatar answered Sep 04 '25 20:09

Peter Staranchuk