我正在尝试使用Strava事件,因此我必须注册一个Webhook。很好。
1)。我发出了发布请求,以启动Webhook的注册过程。
curl -X POST https://api.strava.com/api/v3/push_subscriptions \
-F client_id=MY_APP_ID \
-F client_secret=MY_CLIENT_SECRET \
-F 'callback_url=MY_DOMAIN/webhook/strava' \
-F 'verify_token=MY_VERIFY_TOKEN'
2)我已经设置了路线
Route::match(['get', 'post'], '/webhook/strava', 'StravaController@webhook');
3)我的控制器返回有效的json响应,代码为200 ,并且需要所有数据
public function webhook(Request $request)
{
Log::info($request->input('hub.challenge'));
return response()->json([
'hub.challenge' => $request->input('hub.challenge')
], 200);
}
但是当我发布帖子时,它会返回:
{"message":"Bad Request","errors":[{"resource":"PushSubscription","field":"challenge response","code":"challenge response malformed"}]}
详细信息:
我注意到未触发日志语句。因此,也许是因为格式错误,因为它返回了{"hub.challenge": null}
。但是我认为在这种情况下,错误消息会有所不同。
谢谢你们!
答案 0 :(得分:0)
以下代码响应对我有用:
return response()->json([
'hub.challenge' => Input::get('hub.challenge',Input::get("hub_challenge",TRUE))
], 200);
答案 1 :(得分:0)
使用下划线。像这样
$mode = $request->get('hub_mode');
$token = $request->get('hub_verify_token');
$challenge = $request->get('hub_challenge');