我安装了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)相同。我该如何解决这个问题?
答案 0 :(得分:1)
我最好的选择是您的防火墙在“使用*”网址
时无效尝试改变:
pattern: ^/login$
我个人对所有网址都使用防火墙:
pattern: ^/
并明确设置公共网址:
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/add, role: ROLE_USER }
答案 1 :(得分:1)
我遇到了同样的问题:
No ressource owner with name 'check-google'.
对我而言,它是通过将routing.yml更改为:
来解决的google_login:
pattern: /api/login/check/google
答案 2 :(得分:0)
我解决了这个问题。我发现此链接有帮助:
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