Facebook数据删除请求JSON响应不符合预期问题求助
Facebook数据删除回调响应格式疑问
我在实现Facebook数据删除请求功能时,Facebook端调用我的回调方法后反馈,我返回的JSON响应不符合其预期。根据Facebook官方文档,要求的响应格式示例为:
{ url: '<url>', confirmation_code: '<code>' }
文档提供的示例代码如下:
$data = array( 'url' => $status_url, 'confirmation_code' => $confirmation_code ); echo json_encode($data);
但这段代码生成的响应和Facebook要求的格式不符——属性名带双引号,值也用双引号包裹。于是我自行构造了响应字符串:
$return_value = "{ url: '$url', confirmation_code: '$confirmation_code' }";
结果仍然失败。我尝试过使用response()->json()、json_encode()方法返回数组或自定义字符串,要么整个字符串被添加双引号,要么URL被转义,这应该就是响应不符合要求的原因。现在想明确:Facebook到底要求该响应的具体格式是什么?
附当前回调方法代码:
public function removeFBDataCallback(Request $request) { $signed_request = $request->get('signed_request'); $data = $this->parse_signed_request($signed_request); $fb_user_id = $data['user_id']; $fb_user = $this->UsersRepository->CheckFacebookUIDExisted($fb_user_id); if (!$fb_user) { error_log("No user with facebook id: $fb_user_id found when trying to remove data during facebook deletion callback"); return response()->json(['code' => 403, 'data' => ['message' => 'Facebook user not found when deleting facebook data']]); } else { $fb_delete_confirmation = new FBDeleteConfirmation(); $fb_delete_confirmation->facebook_id = $fb_user->facebook_user_id; $fb_delete_confirmation->token = genToken(20); $fb_delete_confirmation->save(); $fb_user->is_account_facebook = 0; $fb_user->facebook_user_id = null; $fb_user->save(); $confirmation_code = base64_encode("abc123"); $url = url('login').'/facebook'.'/dataDeleteConfirmation'.'?confirmationid'.('=').($confirmation_code); error_log('------------------'); $return_value = "{ url: '$url', confirmation_code: '$confirmation_code' }"; error_log($return_value); return json_encode($return_value); } }
内容的提问来源于stack exchange,提问作者Esko918
相关产品推荐
相关产品推荐

