長野エンジニアライフ

東京から長野に移住したエンジニアのブログです。🦒🗻⛰

Error at webhook: 400 {"errors":[{"code":214,"message":"Webhook URL does not meet the requirements. Invalid CRC token or json response format."}]}の対処

事象

twitrer Account Activity APIの技術調査にて以下のエラーが発生。

Error at webhook: 400
{"errors":[{"code":214,"message":"Webhook URL does not meet the requirements. Invalid CRC token or json response format."}]}

原因

Django側のwebhookでCRCのテストに合格できていない。

対応方法

Django側のwebhookを修正。CRCに合格できた。

from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
from django.http import HttpResponse
import base64
import hashlib
import hmac
import json

# Create your views here.

def test_view(request):
    """テストページ"""
    return HttpResponse('テストページ')

@csrf_exempt
def webhook(request):
    """webhook"""
    key = ':API secret key'.encode()
    msg = request.GET.get('crc_token')
    msg_bytes = msg.encode()
    hash = hmac.new(key, msg=msg_bytes, digestmod=hashlib.sha256).digest()
    twitter_response = {'response_token': 'sha256=' + base64.b64encode(hash).decode()}
    return HttpResponse(json.dumps(twitter_response), content_type='application/json')

参考記事 medium.com stackoverflow.com cloud.tencent.com