#laravel #facebook #facebook-messenger
Вопрос:
Веб-сайт https://jeeveslive.com/ имеет функцию обмена сообщениями в Facebook Messenger. На веб-сайте есть 4 типа сообщений, из которых сообщения о концертах работают нормально, но остальные сообщения показывают пустую белую страницу.
Общий доступ работает нормально. Сообщения публикуются в facebook messenger, но когда другой пользователь открывает свой мессенджер и нажимает на ссылку для публикации, он перенаправляется на пустую белую страницу на веб-сайте, вместо того, чтобы перейти на страницу профиля человека, создавшего сообщение.
Он отлично работает на устройствах Android, также отлично работает в браузере Mac Book Safari, но не работает на мобильных устройствах IOS, использующих браузер Safari. Вот код
public function facebookshare(Request $request, $id)
{
$arr = $this->shareTrait($request, $id, 'fb', 'Newsfeed' );
return view('site.newsfeed.facebookshare')->withTitle(' | Newsfeed Share')->withModel($arr['model'])->withV($arr['v']);
}
Код для общей черты
public function shareTrait($request, $id, $type, $modelName, $route = null)
{
$model = 'App\Models\'.$modelName;
$model = $model::findOrFail($id);
if($modelName == 'Newsfeed'){
$route = getNewsfeedRedirectUrl($model->user->username);
}
if($type == 'fb'){
$agent = new Agent();
if($agent->browser() == "Safari" amp;amp; $modelName != "Gig"){
return redirect()->route('sharedPostDetails',['id'=>$id])->send();
}
$ref = Request::server('HTTP_REFERER');
if( ($request->fbclid) || (strpos($ref,'m.facebook') > -1) ){
return redirect($this->getRouteUrl($model, $route, $modelName))->send();
}
}
else if($type == 'tw'){
if(endsWith(URL::previous(),'t.co/') || endsWith(URL::previous(),'?amp=1') ){
return redirect($this->getRouteUrl($model, $route, $modelName))->send();
}
}
else if($type == 'lk'){
if(strpos(URL::previous(),'linkedin.com/') !== false){
return redirect($this->getRouteUrl($model, $route, $modelName))->send();
}
}
isBlocked($model->user_id);
$v = ($request->v) ? '?v='.$request->v : '';
return [ 'model' => $model, 'v' => $v ];
}
Решение, которое я применил:
Здесь я уже применил условие, что если пользователь использует браузер Safari, то он должен быть перенаправлен на страницу сведений о публикации в качестве решения, но это не сработало в браузере safari на устройствах IOS.