【发布时间】:2020-12-11 21:58:15
【问题描述】:
我正在使用 Twitter 帐户活动 API 发送/接收消息。在其中,我在生成 webhook 时遇到了问题。第一次创建成功。在 webhook 文件中,我在每次发送或接收消息时将消息保存在数据库中。但是当我发送消息时,数据库中没有任何内容。这是 webhook 文件:
const APP_CONSUMER_SECRET = '**********';
// Example token provided by incoming GET request
if(isset($_REQUEST['crc_token'])) {
$token = $_REQUEST['crc_token'];
/**
* Creates a HMAC SHA-256 hash created from the app TOKEN and
* your app Consumer Secret.
* @param token the token provided by the incoming GET request
* @return string
*/
function get_challenge_response($token) {
$hash = hash_hmac('sha256', $token, APP_CONSUMER_SECRET, true);
$response = array(
'response_token' => 'sha256=' . base64_encode($hash)
);
return json_encode($response);
}
}else{
$feedData = file_get_contents('php://input');
$handleData = fopen('twitterDemo.txt', "w" );
fwrite($handleData,$feedData);
fclose($handleData);
$array = json_decode(file_get_contents('php://input'), true);
if (isset($array['direct_message_events'][0]['type']) && $array['direct_message_events'][0]['type'] == 'message_create' ) {
include_once ('config.php');
include_once ('database-queries.php');
$message = $array['direct_message_events'][0]['message_create']['message_data']['text'];
$sender = $array['direct_message_events'][0]['message_create']['sender_id'];
$from = $array['direct_message_events'][0]['message_create']['target']['recipient_id'];
$message_type = 'incoming';
$message_status = 'unread';
$userId = $sender;
$account_name = 'twitter';
$image_url = '';
if(isset($array['direct_message_events'][0]['message_create']['message_data']['attachment'])){
$image_url = "Not Image";
}
$data = array('to'=>$from, 'from'=>$sender, 'msg'=>$message,'image_url' =>$image_url);
insert($data, $account_name, $message_type, $message_status, $conn);
}
}
我认为可能存在 webhook 问题,所以我删除了现有应用程序并创建新应用程序并使用新名称为其设置开发环境标签。但是当我尝试创建 webhook 时,它给了我错误:
[code] => 214 [message] => Webhook URL 不符合要求。 无效的 CRC 令牌或 json 响应格式。
我不知道现在这里发生了什么。我正在使用这个 api 创建 webhook url
$url = "https://example.com/twitter/webhook.php";
$result = $connection->post("account_activity/all/env_name/webhooks", ["url" => $url]);
谁能帮我解决这个问题。任何帮助将不胜感激。
谢谢!
【问题讨论】: