FOSFacebookBunlde создает исключение "Примечание: преобразование массива в строку в исключении vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php 103"
Поскольку я обновил Symfony 2.0 до 2.1, я не могу войти через Facebook. Symfony перенаправляет меня на мою страницу входа и отображает эту ошибку:
Примечание: преобразование массива в строку в строке vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php 103
Вы можете увидеть мой файл журнала ниже:
[2012-11-19 09:17:48] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ProfilerListener::onKernelRequest". [] []
[2012-11-19 09:17:48] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Bundle\FrameworkBundle\EventListener\SessionListener::onKernelRequest". [] []
[2012-11-19 09:17:48] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". [] []
[2012-11-19 09:17:49] request.INFO: Matched route "fos_facebook_security_check" (parameters: "_controller": "Strict\UserBundle\Controller\LoginController::loginFbAction", "_locale": "pl", "_route": "fos_facebook_security_check") [] []
[2012-11-19 09:17:49] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". [] []
[2012-11-19 09:17:49] event.DEBUG: Notified event "kernel.request" to listener "Symfony\Component\Security\Http\Firewall::onKernelRequest". [] []
[2012-11-19 09:17:49] doctrine.DEBUG: SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS password7, t0.last_login AS last_login8, t0.locked AS locked9, t0.expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS confirmation_token12, t0.password_requested_at AS password_requested_at13, t0.roles AS roles14, t0.credentials_expired AS credentials_expired15, t0.credentials_expire_at AS credentials_expire_at16, t0.id AS id17, t0.facebookId AS facebookId18, t0.name AS name19, t0.text AS text20, t0.location AS location21, t0.picturePath AS picturePath22, t0.www AS www23, t0.language AS language24, t0.facebookWww AS facebookWww25, t0.male AS male26, t0.reviewsCount AS reviewsCount27, t0.postsCount AS postsCount28, t0.emailEnabled AS emailEnabled29, t0.messagesEnabled AS messagesEnabled30, t0.wwwNofollow AS wwwNofollow31, t0.facebookWwwNofollow AS facebookWwwNofollow32, t0.yearBirth AS yearBirth33, t0.lastModified AS lastModified34, t0.picture_id AS picture_id35 FROM fos_user t0 WHERE t0.facebookId = ? LIMIT 1 ["000_facebook_id_here_0000"] []
[2012-11-19 09:17:51] doctrine.DEBUG: SELECT t0.username AS username1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS password7, t0.last_login AS last_login8, t0.locked AS locked9, t0.expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS confirmation_token12, t0.password_requested_at AS password_requested_at13, t0.roles AS roles14, t0.credentials_expired AS credentials_expired15, t0.credentials_expire_at AS credentials_expire_at16, t0.id AS id17, t0.facebookId AS facebookId18, t0.name AS name19, t0.text AS text20, t0.location AS location21, t0.picturePath AS picturePath22, t0.www AS www23, t0.language AS language24, t0.facebookWww AS facebookWww25, t0.male AS male26, t0.reviewsCount AS reviewsCount27, t0.postsCount AS postsCount28, t0.emailEnabled AS emailEnabled29, t0.messagesEnabled AS messagesEnabled30, t0.wwwNofollow AS wwwNofollow31, t0.facebookWwwNofollow AS facebookWwwNofollow32, t0.yearBirth AS yearBirth33, t0.lastModified AS lastModified34, t0.picture_id AS picture_id35 FROM fos_user t0 WHERE t0.email = ? LIMIT 1 ["my_email_address_here"] []
[2012-11-19 09:17:52] doctrine.DEBUG: "START TRANSACTION" [] []
[2012-11-19 09:17:52] doctrine.DEBUG: "ROLLBACK" [] []
[2012-11-19 09:17:52] security.INFO: Authentication request failed: Notice: Array to string conversion in vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php line 103 [] []
[2012-11-19 09:17:52] security.DEBUG: Redirecting to fos_user_security_login [] []
Два вышеуказанных SQL-запроса SELECT не вызывают ошибок и не возвращают результатов (проверено в phpmyadmin).
Composer.json:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.2.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.2.*",
"sensio/framework-extra-bundle": "2.2.*",
"sensio/generator-bundle": "2.2.*",
"jms/security-extra-bundle": "1.3.*",
"jms/di-extra-bundle": "1.2.*",
"facebook/php-sdk": "dev-master",
"friendsofsymfony/user-bundle": "*",
"friendsofsymfony/facebook-bundle": "dev-master",
"besimple/i18n-routing-bundle": "dev-master",
"gregwar/captcha-bundle": "dev-master"
},
Если честно, я не знаю, что может быть не так и как найти ошибку. Если вам нужны дополнительные данные / конфигурационные файлы, оставьте комментарий.
1 ответ
Привет, я нашел решение. Проблема в том, что Facebook не возвращается picture
свойства строки для передачи setFBData
в User
юридическое лицо.
Там было picture
строковое свойство, содержащее URL изображения. Теперь оно содержит:
строка; Если для вашего приложения включен параметр переноса "Октябрь 2012 года", это поле будет объектом с полями url и is_silhouette; is_silhouette истина, если пользователь не загрузил изображение профиля
Мои setFBdata выглядят так:
public function setFBData($fbdata)
{
...
if (isset($fbdata['picture']))
{
$this->setPicturePath($fbdata['picture']);
}
}
Как вы можете видеть, он пытался установить объект / массив в строковое поле.