Google oauth 認証を処理するために、 HWIOAuthBundleを使用して Symfony2.1 をセットアップしようとしています。
バンドルの説明にある手動の指示に従いましたが、まだ何かが不足しています。認証されたユーザーを必要とするアクションにアクセスすると (または単に url /connect/google と入力すると)、Google 認証ページにリダイレクトされます - この部分は機能しています。しかし、リダイレクト後 (Google にログインし、データの共有に同意した後)、DB に新しいユーザーが作成されず、接続/失敗アクションにリダイレクトされます。Google 認証は、ユーザーを認証する 1 つの方法にすぎません。何が間違っている可能性がありますか?
これは私のルーティングです:
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /connect
google_login:
pattern: /login/check-google
security.yml
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
form_login:
provider: fos_userbundle
login_path: /connect/google
check_path: /login/login_check
logout: true
anonymous: true
oauth:
resource_owners:
google: "/login/check-google"
login_path: /connect/google
failure_path: /connect-fail
# FOSUB integration
oauth_user_provider:
service: hwi_oauth.user.provider.fosub_bridge
と構成
hwi_oauth:
firewall_name: secured_area
resource_owners:
google:
type: google
client_id: ....
client_secret: ......
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
fosub:
username_iterations: 5
properties:
google: googleId
Google リダイレクト URL
http://xxxx/login/check-google
私のユーザーエンティティ:
class User extends BaseUser
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var integer $id
*
* @ORM\Column(name="google_id", type="integer")
*/
protected $googleId;
//編集 - 更新
Symfony
のログで、Google リダイレクトからの
リクエストが 1 つあることがわかりました。google_id SELECT * FROM app_user t0 WHERE t0.googleId = に基づいて、データベースからユーザーを取得しようとしただけです。LIMIT 1 : ['123456789'] しかし、そのユーザーは存在しません。
認証を試みる前にユーザーを作成する必要がありますか?