我已经按照tutotial http://m2mdas.github.io/blog/2013/11/21/integrate-hwioauthbundle-with-fosuserbundle/进行Github登录工作,它几乎似乎正在工作,因为当我点击登录时我登陆github登录页面,我可以看到1个用户在我的github上注册应用程序在github仪表板中。但我不是在Symfony中认证的。在我底部的symfony工具栏上,它仍然说我是一个匿名用户,另外一个新行没有添加到我的表fos_user中。
对于facebook登录,当我点击facebook的生成器登录链接时,它给出了错误“应用程序配置不允许给定URL:应用程序的设置不允许一个或多个给定的URL。它必须与网站URL或Canvas URL匹配,或者域必须是App域之一的子域。“
我的另一个疑问是,在本教程中,在routing.yml中它说要放,
hwi_github_login:
pattern: /secure_area/login/check-github
由于没有指定控制器或资源,我应该把它作为控制器操作路径或资源放在这里?
fos_user: db_driver:orm#其他有效值是'mongodb','couchdb'和'propel' firewall_name:main user_class:Les \ UserBundle \ Entity \ User 注册: 确认: enabled:true
hwi_oauth: #此捆绑包处于活动状态的防火墙的名称,必须设置此设置 firewall_name:secure_area 连接: 确认:是的 #account_connector:hwi_oauth.user.provider.fosub_bridge #registration_form_handler:hwi_oauth.registration.form.handler.fosub_bridge #registration_form:fos_user.registration.form
resource_owners:
github:
type: github
client_id: b625ec98906cc26ad4f1
client_secret: a3505d93ab1fc6c5a7fa2805c0723bbfddf556a7
scope: "user:email"
facebook:
type: facebook
client_id: 331922526960400
client_secret: 9dc32a145a1c6b0b7f5e57a34d174011
fosub:
# try 30 times to check if a username is available (foo, foo1, foo2 etc)
username_iterations: 30
# mapping between resource owners (see below) and properties
properties:
github: githubID
facebook: fbID
安全性: 编码器: FOS \ UserBundle \ Model \ UserInterface:sha512
role_hierarchy:
ROLE_CLIENT: ROLE_USER
ROLE_RESTO: ROLE_CLIENT
ROLE_ADMIN: [ ROLE_USER, ROLE_CLIENT, ROLE_RESTO ]
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
secure_area:
pattern: ^/secure_area
oauth:
failure_path: /secure_area/connect
login_path: /secure_area/connect
check_path: /secure_area/connect
provider: fos_userbundle
resource_owners:
github: "/secure_area/login/check-github"
facebook: "/secure_area/login/check-facebook"
oauth_user_provider:
service: hwi_oauth.user.provider.fosub_bridge
anonymous: true
logout:
path: /secure_area/logout
target: / #where to go after logout
access_control:
- { path: ^/booking, role: ROLE_CLIENT }
- { path: ^/party_calendar, role: ROLE_CLIENT }
- { path: ^/restaurant_admin, role: ROLE_RESTO }
- { path: ^/secure_area/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/secure_area/connect, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/secure_area, role: ROLE_USER }
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
prefix: /login
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /secure_area/connect
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /secure_area/connect
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /secure_area/connect
hwi_github_login:
pattern: /secure_area/login/check-github
defaults: { _controller: LesCouvertsBundle:Couverts:index }
hwi_facebook_login:
pattern: /secure_area/login/check-facebook
defaults: { _controller: LesCouvertsBundle:Couverts:index }
hwi_google_login:
pattern: /secure_area/login/check-google
defaults: { _controller: LesCouvertsBundle:Couverts:index }
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="githubId", type="string", nullable=true)
*/
private $githubID;
/**
* @var string
*
* @ORM\Column(name="githubId", type="string", nullable=true)
*/
private $fbID;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @param string $githubID
*/
public function setGithubID($githubID)
{
$this->githubID = $githubID;
}
/**
* @return string
*/
public function getGithubID()
{
return $this->githubID;
}
/**
* @param string $fbID
*/
public function setFbID($fbID)
{
$this->fbID = $fbID;
}
/**
* @return string
*/
public function getFbID()
{
return $this->fbID;
}
}
答案 0 :(得分:1)
错误:
"应用程序配置不允许使用URL:一个或 应用程序的设置不允许使用更多给定的URL。它必须 匹配网站URL或Canvas URL,或域必须是子域 应用程序的一个域名。"
当您登录Facebook应用程序的域时发生 与您在“设置”选项卡上设置的应用程序域不匹配 你的Facebook应用程序。
例如,如果您从" http:/www.yoursite.com"登录,则需要 去设置" yoursite.com"作为应用程序上的App域。
至于你遇到的另一个问题,无法插入 用户在数据库中,请查看以下指南,其中没有 只注册,但注册后自动登录用户: