gpt4 book ai didi

postback - 如何使用 Skadnetwork/Apple 验证回发

转载 作者:行者123 更新时间:2023-12-04 08:42:24 28 4
gpt4 key购买 nike

根据 documentation,我在验证与 Skadnetwork/Apple 的回发时遇到问题苹果正在放弃。
我有两个问题(至少我认为只有两个问题)。

  • \u2063 - 我正在使用 PHP 从 POST 中获取所有信息,然后创建字符串以供以后验证。可悲的是,我不确定 \u2063应该只是存在于字符串中,或​​者是否应该以某种编码/解码的方式存在。
  • Apple 公钥 - 应该如何使用。以某种解码/编码方式在文档中看到的版本。文档说解码 base 64,然后从中创建 X.509 标准公钥。

  • 有没有人有一个工作的例子?此刻我完全迷失了。

    最佳答案

    我使用 NodeJS,它非常简单。我拿了 Apple 的公钥并用 -----BEGIN PUBLIC KEY-----\n\n-----END PUBLIC KEY----- 包装了它。

    -----BEGIN PUBLIC KEY-----
    <APPLE_PUBLIC_KEY_BASE_64 (copy paste from Apple's guide)>
    -----END PUBLIC KEY-----

    或者您可以使用 NodeJs 加密模块来加载公钥:
    const key = Buffer.from(`<APPLE_PUBLIC_KEY_BASE_64 (copy paste from Apple's guide)>`, 'base64');
    const publicKey = crypto.createPublicKey({
    key,
    format: 'der',
    type: 'spki',
    });
    然后,我使用 \u2063 分隔符连接了验证所需的回发部分。
    // ad network version 2.0/2.1
    const message = [
    version,
    adNetworkId,
    campaignId,
    appId,
    transactionId,
    redownload,
    ].join('\u2063');
    然后我使用 NodeJS 加密模块来验证签名:
    const verify = crypto.createVerify('sha256');
    verify.update(message);
    verify.verify(publicKey, signature, 'base64'); // this returns a boolean
    这可以使用来自 Singular-SKAdNetwork-Apphere ECDSA 包装类以类似的方式完成
    SEPERATOR = u"\u2063"

    postback = {
    "version": "2.1",
    "ad-network-id": "com.example",
    "campaign-id": 42,
    "transaction-id": "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",
    "app-id": 525463029,
    "attribution-signature": "MEUCID6rbq3qt4GvFaAaynh5/LAcvn1d8CQTRhrZhLIxLKntAiEAo7IrvoMw6u2qDg6Tr5vIsEHXjlLkPlCOL0ojJcEh3Qw=",
    "redownload": True,
    "source-app-id": 1234567891,
    "conversion-value": 20
    }

    pub_key = """
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWdp8GPcGqmhgzEFj9Z2nSpQVddayaPe4FMzqM9wib1+aHaaIzoHoLN9zW4K8y4SPykE3YVK3sVqW6Af0lfx3gg==
    -----END PUBLIC KEY-----
    """

    message = (
    postback["version"]
    + SEPERATOR
    + postback["ad-network-id"]
    + SEPERATOR
    + str(postback["campaign-id "])
    + SEPERATOR
    + str(postback["app-id "])
    + SEPERATOR
    + postback["transaction-id"]
    + SEPERATOR
    + str(postback["redownload"]).lower()
    + SEPERATOR
    + str(postback["source-app-id"])
    )

    ecdsa = ECDSA(pub_key)
    signature = postback["attribution-signature"]
    ecdsa.verify(message, signature) # this returns a boolean
    我希望这将有所帮助。我对 PHP 没有任何经验:/

    关于postback - 如何使用 Skadnetwork/Apple 验证回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64496534/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com