Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 斯特拉瓦API返回“;格式错误的请求”;关于webhook注册_Php_Laravel_Api_Webhooks_Strava - Fatal编程技术网

Php 斯特拉瓦API返回“;格式错误的请求”;关于webhook注册

Php 斯特拉瓦API返回“;格式错误的请求”;关于webhook注册,php,laravel,api,webhooks,strava,Php,Laravel,Api,Webhooks,Strava,我正在尝试使用Strava事件,所以我必须注册一个webhook。都很好 1)我发出post请求以启动注册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' \

我正在尝试使用Strava事件,所以我必须注册一个webhook。都很好

1)我发出post请求以启动注册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"}]}
详细信息: 我注意到log语句没有被激发。所以它可能是说格式不正确,因为它返回
{“hub.challenge”:null}
。但我认为在这种情况下,错误信息会有所不同


谢谢你们

以下代码响应对我有效:

return response()->json([
    'hub.challenge' => Input::get('hub.challenge',Input::get("hub_challenge",TRUE))
], 200);

使用下划线。像这样

$mode = $request->get('hub_mode');
$token = $request->get('hub_verify_token');
$challenge = $request->get('hub_challenge');

如果你说服务器中的代码没有被调用,那么问题在于你最初的帖子,不是吗?您确定要与curl一起使用的选项是
-F
?这通常用于将文件附加到多部分表单请求,而不是标准的POST。只是从Strava复制了curl,只更改了我应用程序中的变量:那么,您如何调试我的POST的响应,以查看它是否符合正确的路径?我想检查web服务器日志是第一步。是的,我当然这样做了。日志为空。我还尝试了其他curl语法,但返回:
201{“message”:“Bad Request”,“errors”:[{“resource”:“PushSubscription”,“field”:“challenge response”,“code”:“challenge response malformed”}]}
Ok,所以如果没有任何内容返回到服务器,则可以从问题中删除项目2和3。听起来这完全是一个“我的curl请求有什么问题”的问题。你联系过API维护人员吗?他们是否提供某种支持或论坛?