Я хотел бы добавить опцию входа в facebook на мой сайт, следуя этому руководству. Я сделал все, как в учебнике, но я все еще получаю эту ошибку:
OAuthException: redirect_uri isn't an absolute URI
Как это можно решить?
Эти URL-адреса генерируются facebookOAuthProvider
. Веб-сайт не находится на локальном хосте. Он работает на веб-сервере с https.
Это соответствующий код:
// redirect to Facebook
$facebookOAuthProvider = $this->get('app.facebook_provider');
$url = $facebookOAuthProvider->getAuthorizationUrl([
// these are actually the default scopes
'scopes' => ['public_profile', 'email'],
]);
return $this->redirect($url);
Он перенаправляет на этот URL:
https://www.facebook.com/v2.3/dialog/oauth?scopes[0]=public_profile&scopes[1]=email&state=...&scope=public_profile,email&response_type=code&approval_prompt=auto&redirect_uri=/connect/facebook-check&client_id=...
redirect_uri
действительно не является абсолютным URL-адресом. Но как это можно исправить?
Edit
Если я добавлю 'redirect_uri' => [$redir]
, тогда url выглядит так:
https://www.facebook.com/v2.3/dialog/oauth?scopes%5B0%5D=public_profile&scopes%5B1%5D=email&scopes%5B2%5D=user_location&redirect_uri%5B0%5D=https%3A%2F%2Fexample.com%2Fconnect%2Ffacebook-check&state=...&scope=public_profile%2Cemail&response_type=code&approval_prompt=auto&client_id=...
Я могу видеть абсолютный redirect_uri
в сгенерированном URL-адресе, но я все равно получаю эту ошибку, если я перехожу к ней
Редир определяется как:
$redir = $this->generateUrl('connect_facebook_check', array(), UrlGeneratorInterface::ABSOLUTE_URL);
Edit2
Если заменить [$redir]
на $redir
, то facebook перенаправляет меня правильно на /connect/facebook-check
с кодом, но я получаю там OAuthException: redirect_uri isn't an absolute URI. Check RFC 3986
.