我有HWIOAuthBundle
(FOSUserBundle
集成。)的问题。
单击链接qazxsw poi,此屏幕出现。 qazxsw poi(屏幕模糊,因为它是客户的电子邮件)
然后回到回调网址/connect/google
/login/check-google
如果我直接键入/login
,没有任何反应,只是重定向到An authentication exception occurred.
。
我不知道在/login/check-google
页面上有什么。
我怎么检查??? (我在这个问题上坚持了一个星期,我刷新并更新了文章。)
我的环境是
security.yml
login
config.yml
/login/check-google
servitse.hml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
# if you are using Symfony < 2.8, use the following config instead:
# csrf_provider: form.csrf_provider
logout: true
anonymous: true
oauth:
resource_owners:
google: "/login/check-google"
login_path: /login
use_forward: false
failure_path: /login
oauth_user_provider:
service: my_user_provider
login:
pattern: ^/login$
security: false
access_control:
- { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
使用routing.yml
hwi_oauth:
connect:
account_connector: my_user_provider
firewall_names: [main]
fosub:
username_iterations: 30
properties:
google: google_id
resource_owners:
google:
type: google
client_id: XXXXXXXX
client_secret: XXXXXXXXXX
scope: "email profile"
我解决了我的问题。
降级>>> HWIAuthBundle 0.4.3
并在config.yml中添加此项
<parameters>
<parameter key="my_user_provider.class">Acme\UserBundle\Security\Core\User\FOSUBUserProvider</parameter>
</parameters>
<services>
<service id="my_user_provider" class="%my_user_provider.class%">
<argument type="service" id="fos_user.user_manager"/>
<argument type="service" id="service_container" />
<argument type="collection">
<argument key="google">google_id</argument>
</argument>
</service>
</services>
这是因为https / http的区别。 Google请求https。但是它会跳过https验证。
检查最后的评论。
admin_area:
resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml"
prefix: /admin
_sonata_admin:
resource: .
type: sonata_admin
prefix: /admin
acme_member:
resource: "@AcmeMemberBundle/Resources/config/routing.yml"
prefix: /member
_user_bundle:
resource: "@UserBundle/Resources/config/routing.yml"
acme_top:
resource: "@AcmeTopBundle/Resources/config/routing.yml"
prefix: /
fos_user_group:
resource: "@FOSUserBundle/Resources/config/routing/group.xml"
prefix: /group
sonata_page_cache:
resource: '@SonataCacheBundle/Resources/config/routing/cache.xml'
prefix: /
#HWIOAuthBundle routes
hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /login
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /connect
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
facebook_login:
path: /login/check-facebook
google_login:
path: /login/check-google
fos_js_routing:
resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"
我不知道hwi_oauth:
http_client:
verify_peer: false
自上次回答以来是否有变化,但现在没有必要降级包。
事实上,https://github.com/hwi/HWIOAuthBundle/issues/1024选项已在0.6.x版本中删除,因为内部Http客户端已被HttplugBundle取代。
现在官方文档中描述了禁用'verify_peer'选项的正确方法:hwi/oauth-bundle