php-カスタムOAuthUserProviderにパラメーターを挿入しようとしています
ドキュメントに苦労した後、こちらの例に従ってHWIOAuthBundleを追加しました。 Googleにリダイレクトされても問題ありませんが、Googleに戻ると、最初のパラメータが欠落しているという警告が表示されます。
config.yml
services:
wxexchange_oauth_user_provider:
class: WX\ExchangeBundle\Service\OAuthUserProvider
arguments: [@session, @doctrine, @service_container]
hwi_oauth:
resource_owners:
google:
type: google
client_id: xxxxxx
client_secret: xxxxx
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
user_response_class: \WX\ExchangeBundle\Service\OAuthUserProvider
firewall_name: main
security.yml
providers:
my_custom_hwi_provider:
id: wxexchange_oauth_user_provider
firewalls:
main:
pattern: ^/
anonymous: ~
provider: main
form_login:
check_path: login_check
login_path: /Login
csrf_provider: form.csrf_provider
logout:
path: logout
oauth:
resource_owners:
facebook: "/Login/OAuth/check-facebook"
google: "/Login/OAuth/check-google"
login_path: /Login/OAuth
use_forward: false
failure_path: /Login
oauth_user_provider:
service: wxexchange_oauth_user_provider
routing.yml
hwi_oauth_login:
resource: "@HWIOAuthBundle/Resources/config/routing/login.xml"
prefix: /Login/OAuth
hwi_oauth_connect:
resource: "@HWIOAuthBundle/Resources/config/routing/connect.xml"
prefix: /Login/OAuth
hwi_oauth_redirect:
resource: "@HWIOAuthBundle/Resources/config/routing/redirect.xml"
prefix: /Login/OAuth
google_login:
pattern: /Login/OAuth/check-google
facebook_login:
pattern: /Login/OAuth/check-facebook
OAuthUserProvider.php
class OAuthUserProvider extends BaseOAuthUserProvider
{
protected $session, $doctrine, $admins;
public function __construct($session, $doctrine, $service_container)
{
$this->session = $session;
$this->doctrine = $doctrine;
$this->container = $service_container;
}
public function loadUserByUsername($username)
{
//code
}
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
//code
}
}
エラー:
警告:引数1がありません WX \ ExchangeBundle \ Service \ OAuthUserProvider :: __ Construct()、で呼び出されます /opt/lampp/htdocs/workoutexchange/trunk/WorkoutExchange/vendor/hwi/oauth-bundle/HWI/Bundle/OAuthBundle/OAuth/ResourceOwner/AbstractResourceOwner.php 186行目で次のように定義されています /opt/lampp/htdocs/workoutexchange/trunk/WorkoutExchange/src/WX/ExchangeBundle/Service/OAuthUserProvider.php 13行目
答え :
解決策:
config.yml
のservices:
セクションのこの行は間違っています:>
user_response_class: \WX\ExchangeBundle\Service\OAuthUserProvider
ここの構成リファレンスを参照してください。何が必要かはわかりませんが( Google Oauthの例では言及されていません)、ユーザープロバイダーではなく、単純な値オブジェクトである必要があると思います。
答え :
解決策:
このエラーに長い間苦労していました。
providers:
--->>>my_custom_hwi_provider:
---->>>>>>> id: wxexchange_oauth_user_provider
これらの2行にコメントします。ファイアウォールセクションでサービスを宣言します。プロバイダーとして宣言する必要はありません。
この後、問題は解決されます...
firewalls:
........
oauth:
resource_owners:
facebook: "/Login/OAuth/check-facebook"
google: "/Login/OAuth/check-google"
login_path: /Login/OAuth
use_forward: false
failure_path: /Login
oauth_user_provider:
service: wxexchange_oauth_user_provider
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。