Как изменить учетную запись Google (Symfony4, HWIOauthBundle, FOSUserBundle) - PullRequest
0 голосов
/ 23 июня 2019

Я настроил HWIOAuthBundle, чтобы сделать возможным вход в систему через Google на моем веб-сайте (см. Конфиги ниже). Как правильно изменить аккаунт Google? Проблема заключается в том, что в первый раз, когда я пытался войти в систему с помощью Google, он позволяет мне выбрать учетную запись Google, но затем Google запоминает мой выбор и теперь по умолчанию всегда регистрирует меня с первым выбранным аккаунтом. Например, в https://www.flaticon.com/profile/me вы видите кнопку «Отключить Google» с этим необходимым функционалом - открывается окно с выбором аккаунтов Google

Я искал в https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/index.md документах, но нет решения

# composer.json
{
    "type": "project",
    "license": "proprietary",
    "require": {
        "php": "^7.1.3",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "friendsofsymfony/ckeditor-bundle": "^2.1",
        "friendsofsymfony/user-bundle": "^2.1",
        "hwi/oauth-bundle": "^0.6.3",
        "php-http/guzzle6-adapter": "^1.1",
        "php-http/httplug-bundle": "^1.16",
        "sensio/framework-extra-bundle": "^5.3",
        "symfony/apache-pack": "^1.0",
        "symfony/asset": "4.2.*",
        "symfony/console": "4.2.*",
        "symfony/dotenv": "4.2.*",
        "symfony/flex": "^1.1",
        "symfony/form": "4.2.*",
        "symfony/framework-bundle": "4.2.*",
        "symfony/monolog-bundle": "^3.3",
        "symfony/orm-pack": "^1.0",
        "symfony/security-bundle": "4.2.*",
        "symfony/swiftmailer-bundle": "^3.2",
        "symfony/translation": "4.2.*",
        "symfony/twig-bundle": "4.2.*",
        "symfony/validator": "4.2.*",
        "symfony/webpack-encore-bundle": "^1.5",
        "symfony/yaml": "4.2.*"
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        },
        "classmap": [
            "config/bundles.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "replace": {
        "paragonie/random_compat": "2.*",
        "symfony/polyfill-ctype": "*",
        "symfony/polyfill-iconv": "*",
        "symfony/polyfill-php71": "*",
        "symfony/polyfill-php70": "*",
        "symfony/polyfill-php56": "*"
    },
    "scripts": {
        "auto-scripts": {
            "cache:clear": "symfony-cmd",
            "assets:install %PUBLIC_DIR%": "symfony-cmd"
        },
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    },
    "conflict": {
        "symfony/symfony": "*"
    },
    "extra": {
        "symfony": {
            "allow-contrib": "true",
            "require": "4.2.*"
        }
    },
    "require-dev": {
        "doctrine/doctrine-fixtures-bundle": "^3.1",
        "symfony/browser-kit": "4.2.*",
        "symfony/css-selector": "4.2.*",
        "symfony/maker-bundle": "^1.11",
        "symfony/phpunit-bridge": "4.2.*",
        "symfony/profiler-pack": "^1.0",
        "symfony/web-server-bundle": "4.2.*"
    }
}
# config/packages/hwi_oauth.yaml
hwi_oauth:
    http:
        client: httplug.client.hwi_special
    connect:
        account_connector: my_user_provider

    firewall_name: main

    fosub:
        username_iterations: 30
        properties:
            google: google_id

    resource_owners:
        google:
            type:                google
            client_id:           '%env(GOOGLE_ID)%'
            client_secret:       '%env(GOOGLE_SECRET)%'
            scope:               "email profile"
            options:
                display: popup
                csrf: true
                access_type:     offline
# config/packages/security.yaml
security:
    encoders:
        App\Entity\User:
            algorithm: bcrypt

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            anonymous: true
            logout: true

            guard:
                authenticators:
                    - App\Security\LoginFormAuthenticator
            remember_me:
                secret:   '%kernel.secret%'
                lifetime: 2592000 # 30 days
                path:     /

            oauth:
                resource_owners:
                    google:         "/login/check-google"
                login_path:         fos_user_security_login
                failure_path:       fos_user_security_login

                oauth_user_provider:
                    service: my_user_provider

        - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY}
        - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_SUPER_ADMIN }
        - { path: ^/profile, roles: ROLE_USER }
# config/routes.yaml
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"
google_login:
    path: /login/check-google
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...