Spring boot oauth callback для Google - PullRequest
0 голосов
/ 09 мая 2018

Я делюсь полным кодом касательно моей проблемы.Я принимаю файл социальной конфигурации, обработанный с помощью social-cfg.xml, он находится в classpath.

social-cfg.xml

google.client.id=#####################################################################
google.client.secret=############################
google.scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile

Я сделал обработчик Javaчтобы обработать этот файл конфигурации

socialConfig.java

    package com.inno.config;

    import javax.sql.DataSource;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.core.env.Environment;
    import org.springframework.security.crypto.encrypt.Encryptors;
    import org.springframework.social.UserIdSource;
    import org.springframework.social.config.annotation.ConnectionFactoryConfigurer;
    import org.springframework.social.config.annotation.EnableSocial;
    import org.springframework.social.config.annotation.SocialConfigurer;
    import org.springframework.social.connect.ConnectionFactoryLocator;
    import org.springframework.social.connect.ConnectionRepository;
    import org.springframework.social.connect.ConnectionSignUp;
    import org.springframework.social.connect.UsersConnectionRepository;
    import org.springframework.social.connect.jdbc.JdbcUsersConnectionRepository;
    import org.springframework.social.connect.web.ConnectController;
    import org.springframework.social.google.connect.GoogleConnectionFactory;
    import org.springframework.social.security.AuthenticationNameUserIdSource;

    import com.inno.dao.AppUserDAO;
    import com.inno.service.ConnectionSignUpImpl;
    @Configuration
    @EnableSocial
    // Load to Environment.
    @PropertySource("classpath:social-cfg.properties")
    public class SocialConfig implements SocialConfigurer {


         private boolean autoSignUp = false;

          @Autowired
            private DataSource dataSource;
          @Autowired
            private AppUserDAO appUserDAO;
        @Override
        public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
             try {
                    this.autoSignUp = Boolean.parseBoolean(env.getProperty("social.auto-signup"));
                } catch (Exception e) {
                    this.autoSignUp = false;
                }
            // Google
                GoogleConnectionFactory gfactory = new GoogleConnectionFactory(//
                        env.getProperty("google.client.id"), //
                        env.getProperty("google.client.secret"));

                gfactory.setScope(env.getProperty("google.scope"));

                cfConfig.addConnectionFactory(gfactory);
            }
 //............. more code regards to another functionality.

, когда я нажимаю эту ссылку

<a th:href="@{/auth/google}">Google</a>
        <br />

Затем он перенаправляется на страницу Googleс ошибкой, как показано ниже

Error: redirect_uri_mismatch

The redirect URI in the request, http://localhost:8787/auth/google, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: https://console.developers.google.com/apis/credentials/oauthclient/#######?project=#######

при посещении https://console.developers.google.com/apis/credentials/oauthclient/#######?project=#######

есть два варианта

  1. Авторизованные источники JavaScript
  2. Авторизованные URI перенаправления

Я настроил их обоих для проверки с помощью моего веб-приложения.Я просто не знаю, в чем суть этой проблемы.Пожалуйста, помогите мне.Также попросите любое другое требование, если требуется.

1 Ответ

0 голосов
/ 09 мая 2018
* URI перенаправления

в консоли разработчика Google должен точно совпадать с тем местом, откуда вы отправляете запрос. В вашем случае сообщение об ошибке сообщает вам, куда именно вы отправляете форму запроса.

http://localhost:8787/auth/google

Это означает, что вам нужно иметь это именно в консоли разработчика Google в разделе URI авторизованного перенаправления, иначе сервер аутентификации не примет ваш запрос.

Примечание Порт должен быть включен. Точно означает точно, за исключением случая.

...