我安装了HWIOAuthBundle .
但是当我尝试使用Google帐户登录时出现此错误:
没有名为'check-google'的资源所有者 .
我和其他API(Facebook,Twitter ......)有同样的错误
这是我的security.yml:
firewalls:
main:
pattern: ^/login$
security: true
anonymous: true
provider: user_provider
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
logout:
path: fos_user_security_logout
target: /
oauth:
resource_owners:
facebook: "/login/check-facebook"
google: "/login/check-google"
twitter: "/login/check-twitter"
linkedin: "/login/check-linkedin"
login_path: /login
check_path: /login
failure_path: /login
oauth_user_provider:
#this is my custom user provider, created from FOSUBUserProvider - will manage the
#automatic user registration on your site, with data from the provider (facebook. google, etc.)
service: my_user_provider
我的routing.yml:
#HWIOAuthBundle routes
hwi_oauth_security:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /connect/by
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /connect/by
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /login
facebook_login:
pattern: /login/check-facebook
options: { i18n: false }
google_login:
pattern: /login/check-google
options: { i18n: false }
twitter_login:
pattern: /login/check-twitter
linkedin_login:
pattern: /login/check-linkedin
和我的config.yml:
# HWIOAuthBundle
hwi_oauth:
connect:
account_connector: my_user_provider
firewall_name: main
fosub:
username_iterations: 30
properties:
# these properties will be used/redefined later in the custom FOSUBUserProvider service.
facebook: facebook_id
google: google_id
twitter: twitter_id
linkedin: linkedin_id
resource_owners:
facebook:
type: facebook
client_id: xxxxx
client_secret: xxxxx
scope: ""
options:
display: popup
google:
type: google
client_id: xxxx
client_secret: xxxx
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
twitter:
type: twitter
client_id: xxxx
client_secret: xxxx
scope: ""
linkedin:
type: linkedin
client_id: xxxx
client_secret: xxxx
scope: "r_basicprofile"
services:
hwi_oauth.user.provider.entity:
class: HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider
cmf_create.persistence.orm.object_mapper:
class: Midgard\CreatePHP\Mapper\DoctrineOrmMapper
arguments:
- "%cmf_create.map%"
- "@doctrine"
我的问题与No resource owner with name 'google' (HWIOAuthBundle & FOSUserBundle integration)相同 . 我怎样才能解决这个问题 ?
3 回答
我最好的选择是你的防火墙在“使用*”登录时没有激活
尝试改变:
我个人使用防火墙到所有URL:
并明确设置公共网址:
我一直在遇到同样的问题:
对我来说,通过将routing.yml更改为:
我解决了这个问题 . 我发现这个链接有帮助:
http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/
在上面的链接中,在我将cacert.pem添加到路径后,它解决了问题 .
HWIOAuthBundle使用Buzz curl客户端与Web服务进行通信 . 默认情况下,Buzz启用SSL证书检查 . 在某些服务器上,CA证书信息可能不存在 . 要从此页面添加CA证书信息下载cacert.pem并将curl.cainfo php ini变量设置为cacert.pem的位置,例如curl.cainfo = /path/to/cacert.pem
我错过了上面的步骤 .
问候,
Mk6ix