Spring Social 을 이용 하여 위 챗 권한 수여 로그 인 을 쉽게 해결 하 는 방법 예시

위 챗 제3자 로그 인 은 두 가지 방식 이 있 는데 그것 이 바로 스 캔 로그 인(위 챗 오픈 플랫폼)과 공중 번호 로그 인(위 챗 공중 플랫폼)이다.
스 캔 로그 인 은 PC 등 크로스 플랫폼 응용 에 사용 할 수 있 고 대중 플랫폼 은 반드시 위 챗 app 에서 사용 해 야 하 며 대중 번호 에 관심 을 가 져 야 합 니 다.
다음은 공공 플랫폼 을 예 로 들 어 Spring Social 을 바탕 으로 위 챗 사용자 의 권한 수 여 를 실현 하고 사용자 정 보 를 얻 는 방법 을 소개 합 니 다.(위 챗 오픈 플랫폼 과 유사)
첫 번 째 단계:위 챗 공식 플랫폼 배경 에 응용 프로그램 을 등록 하고 관련 설정 을 한다.
위 챗 공식 플랫폼 배경 주소:https://mp.weixin.qq.com/
테스트 번 호 를 먼저 등록 할 수도 있다.https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
위 챗 스 캔 으로 배경 화면 에 로그 인 하면 다음 페이지 를 볼 수 있 습 니 다.

그 중의'앱 ID'와'앱 시 크 릿'은 기록 해 야 합 니 다.이따가 사용 해 야 합 니 다.
아래로 내 려 가서'웹 페이지 권한 수여 사용자 기본 정보 획득'을 찾 고'수정'을 누 르 면 테스트 서버 의 도 메 인 이름 이나 IP 를 입력 합 니 다.

페이지 수정:

두 번 째 단계:관련 코드 추가
우 리 는 서버 가 springboot 기반 이 라 고 가정 합 니 다.
1.spring-social-wechat 의존 도 증가:
Maven:

<dependency>
  <groupId>com.ikasoa</groupId>
  <artifactId>spring-social-wechat</artifactId>
  <version>1.3.1</version>
</dependency>
아니면 Gradle:

compile 'com.ikasoa:spring-social-wechat:1.3.1'
2.설정 항목 추가
application.yml:

spring:
 social:
  wechatmp:
   app-id: [appID]
   app-secret: [appsecret]
또는 application.properties:

spring.social.wechatmp.app-id=[appID]
spring.social.wechatmp.app-secret=[appsecret]
그 중에서'앱 ID'와'앱 시 크 릿'은 위 챗 공식 플랫폼 백 스테이지 에서 얻 을 수 있 습 니 다.
3.응용 프로그램 수정.java
주석@EnableSocial 을 추가 하고 자동 설정 클래스(WechatMpAutoConfiguration.class)를 참조 하 십시오.
Application.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
import org.springframework.social.config.annotation.EnableSocial;
import org.springframework.social.wechat.autoconfigurer.WechatMpAutoConfiguration;

@SpringBootApplication
@EnableSocial
@Import(WechatMpAutoConfiguration.class)
public class Application {

  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }

}
4.SignInAdapter 를 추가 하고 Provider SignInController 를 등록 합 니 다.
SignInAdapter 는 위 챗 인증 이 성공 한 후의 관련 작업 을 처리 하 는 데 사 용 됩 니 다.예 를 들 어:
WechatSignInAdapter.java

import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionKey;
import org.springframework.social.connect.web.SignInAdapter;
import org.springframework.social.wechat.api.User;
import org.springframework.social.wechat.api.Wechat;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.NativeWebRequest;

@Component
public class WechatSignInAdapter implements SignInAdapter {

  @Override
  public String signIn(String openId, Connection<?> connection, NativeWebRequest request) {
    ConnectionKey key = connection.getKey();
    //   providerId             
    if ("wechatmp".equalsIgnoreCase(key.getProviderId())) {
      //     openId         
      User user = ((Wechat)connection.getApi()).userOperations().getUserProfile(openId);
      //         ,        .         
      System.out.println(user);
      return “/success.htm”; //           url
    }
    return “/error.htm”;
  }

}
WechatSignInAdapter 를 ProviderSignInController 에 주입:

......
@Bean
public ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository usersConnectionRepository, WechatSignInAdapter wechatSignInAdapter) {
  ((InMemoryUsersConnectionRepository) usersConnectionRepository).setConnectionSignUp((Connection<?> connection) -> connection.getKey().getProviderUserId());
  return new ProviderSignInController(connectionFactoryLocator, usersConnectionRepository, wechatSignInAdapter);
}
......
그 중에서 InMemory Users Connection Repository 는 메모리 에 사용자 정 보 를 저장 하 는 실현(Users Connection Repository)이자 기본 적 인 실현 이다.또한 SpringSocial 은 JDBC 의 실현 을 선택 할 수 있 도록 제공 했다.
STEP 3:시작 및 테스트
테스트 페이지 에 위 챗 인증 입 구 를 추가 합 니 다:

......
<form action="/signin/wechatmp" method="POST">
  <button type="submit">      </button>
</form>
......
springboot 을 시작 합 니 다.위 챗 app 에서 테스트 페이지 를 열 고 테스트 버튼 을 누 르 십시오.
테스트 페이지 의 도 메 인 이름 은 공공 플랫폼 배경 인'웹 페이지 권한 수여 사용자 기본 정보 획득'에 설 치 된 도 메 인 이름과 같 아야 합 니 다.
모든 것 이 잘 되면 서버 백 엔 드 에서 이 위 챗 사용자 의 상세 한 정 보 를 인쇄 합 니 다.

페이지 는"/success.htm",즉 WechatSignInAdapter.signin 에서 돌아 오 는 주소 로 이동 합 니 다.
테스트 계 정 은 먼저 위 챗 테스트 공중 번호(테스트 번호 배경 에서 QR 코드 를 스 캔 하면 주목 할 수 있 음)에 관심 을 가 져 야 합 니 다.그렇지 않 으 면'ErrorCode:10006'을 잘못 보고 할 수 있 습 니 다.
위 챗 로그 인 이 모두 완료 되 었 습 니 다.
위 챗 오픈 플랫폼 로그 인(스 캔 로그 인)에 대해 서 는 이와 유사 하 게위 챗 오픈 플랫폼배경 에서'apPID'와'appsick'을 신청 하고 위의 예 에서'wechatmp'를'wechat'로 바 꾸 면 됩 니 다.
전체 예 코드:
spring-social-wechat-sample
Spring Social 프로젝트 에 대하 여
spring-social
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기