알 리 페 이 개발 플랫폼 의 제3자 권한 수여 로그 인 및 사용자 정보 획득

제3자 로그 인 에 대해 우 리 는 흔히 볼 수 있 습 니 다.많은 응용 프로그램 이 제3자 로그 인 을 할 수 있 습 니 다.제 가 자주 사용 하 는 것 은 QQ,위 챗,시 나 닷 컴,알 리 페 이 등 이 있 습 니 다.오늘 우 리 는 알 리 페 이 제3자 의 권한 수여 로그 인 을 간단하게 배 워 보 겠 습 니 다.
알 리 페 이 개발 플랫폼 을 열 고 개발 자로 등록 하고 개발 자 센터 를 클릭 하여 제 응용 프로그램 에서 응용 프로그램 을 만 듭 니 다.

기능 정 보 를 클릭 하여 우리 가 필요 로 하 는 기능 을 추가 합 니 다.

여기 서 우 리 는 인터페이스 디 버 깅 을 할 수 없습니다.왜냐하면 우리 의 응용 이 출시 되 지 않 았 기 때문에 APPID 는 무효 입 니 다.여기 서 아 리 는 우리 에 게 해결 방안 을 주 었 습 니 다.바로 샌 드 박스 모드 를 통 해 인터페이스 디 버 깅 을 하 는 것 입 니 다.다음은 우리 의 샌 드 박스 모드 를 맞 추 겠 습 니 다.

RAS 2 를 설정 하면 RAS 1,공개 키 와 비밀 키 의 생 성 규칙 을 설정 하지 않 고 알 리 페 이 문 서 를 볼 수 있 습 니 다.저 는 알 리 페 이 가 제공 하 는 비밀 키 생 성 도 구 를 사용 하여 생 성 되 었 습 니 다.생 성 이 완료 되면 저희 가 다운로드 한 폴 더 에 세 개의 파일 이 생 성 됩 니 다:rsaprivate_key.pem(비밀 키),rsaprivate_key_pkcs8.pem(java 전용 비밀 키),rsapublic_key.pem(공개 키),우 리 는 생 성 된 공개 키 를 샌 드 박스 환경 에서 RAS 2 에 업로드 하고 알 리 페 이 공개 키 를 보 려 면 공개 키 를 저장 한 다음 에 개발 하여 사용 합 니 다.게 이 트 웨 이와 권한 을 부여 하여 주 소 를 되 돌려 줍 니 다.여 기 는 로 컬 디 버 깅 이기 때문에 그림 의 내용 으로 잠시 쓰 면 됩 니 다.
이런 준 비 를 잘 하면 우 리 는 우리 의 구체 적 인 기능 을 실현 할 수 있다.먼저 저 는 알 리 페 이 개발 플랫폼 개발 문 서 를 열 고 기초 능력->제3자 응용 권한 수 여 를 클릭 하여 내용 을 한 번 읽 고 저 는 문서 의 세 번 째 단계 로 돌아 가 겠 습 니 다.

여기 appid 는 샌 드 박스 애플 리 케 이 션 의 ID 를 작성 해 야 합 니 다.그렇지 않 으 면 결제 로그 인 페이지 를 호출 할 수 없습니다.

<a href="https://openauth.alipaydev.com/oauth2/appToAppAuth.htm?app_id=        ID&redirect_uri=http://127.0.0.1:8080/alipayTest/return_url.jsp" >        </a><br/>
다음은 우리 의 returnurl.jsp 의 업무 처리:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ page import="java.util.Map"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.request.*"%>
<%@ page import="com.alipay.api.response.*"%>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>             </title>
 </head>
 <body>
<%
 //     GET      
 Map<String,String> params = new HashMap<String,String>();
 Map requestParams = request.getParameterMap();
 for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
  String name = (String) iter.next();
  String[] values = (String[]) requestParams.get(name);
  String valueStr = "";
  for (int i = 0; i < values.length; i++) {
   valueStr = (i == values.length - 1) ? valueStr + values[i]
     : valueStr + values[i] + ",";
  }
  //    ,            。  mysign sign              
  valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
  params.put(name, valueStr);
 }
 //            ,                    (      )//
 //      
 String app_id = new String(request.getParameter("app_id").getBytes("ISO-8859-1"),"UTF-8");
 out.write(app_id + "
"); // String alipay_app_auth = new String(request.getParameter("source").getBytes("ISO-8859-1"),"UTF-8"); out.write(alipay_app_auth + "
"); // code String app_auth_code = new String(request.getParameter("app_auth_code").getBytes("ISO-8859-1"),"UTF-8");// app_auth_code out.write(app_auth_code + "
"); String privateKey = " "; String publicKey = " "; // auth_code access_token userId //AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do"," APPID",privateKey,"json","UTF-8",publicKey,"RSA2");// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do"," APPID",privateKey,"json","UTF-8",publicKey,"RSA2");// AlipayOpenAuthTokenAppRequest requestLogin1 = new AlipayOpenAuthTokenAppRequest(); requestLogin1.setBizContent("{" + "\"grant_type\":\"authorization_code\"," + "\"code\":\""+ app_auth_code +"\"" + "}"); // AlipayOpenAuthTokenAppResponse responseToken = alipayClient.execute(requestLogin1); if(responseToken.isSuccess()){ out.write("<br/> " + "
"); out.write(responseToken.getAuthAppId() + "
"); out.write(responseToken.getAppAuthToken() + "
"); out.write(responseToken.getUserId() + "
"); } else { out.write(" " + "
"); } %> </body> </html>
여기 서 저희 알 리 페 이 제3자 의 로그 인 권한 수 여 는 여러분 에 게 소 개 를 마 쳤 습 니 다.그러나 알 리 페 이 제3자 가 로그 인 권한 을 수 여 했 기 때문에 사용자 가 이 방식 으로 사용자 의 흐름 을 유도 하지 못 하도록 요구 합 니 다.즉,제3자 가 로그 인 에 성공 한 후에 사용자 가 기본 정 보 를 보완 하도록 유도 하 는 내용 이 나타 나 지 않 고 결제 한 사용자 ID 로 만 사용자 의 신분 표 시 를 할 수 있 습 니 다.
위의 세 번 째 권한 수여 로그 인 을 보고 많은 어린이 들 이 만족 하지 않 아야 합 니 다.제3자 가 로그 인 하면 저 희 는 사용 하 는 알 리 페 이 ID 만 받 을 수 있 습 니 다.만약 에 저희 가 받 아야 할 사용자 정 보 는 사용자 ID,닉네임,성별,성,도시,사용자 이미지,사용자 유형,사용자 상태,실명 인증 여부,학생 여부 등 정 보 를 포함 합 니 다.이것 은 우리 가 한 사용자 의 권한 수 여 를 받 아야 하 는 것 이다.사용자 의 권한 수 여 를 통 해 우 리 는 사용자 가 알 리 페 이에 있 는 정 보 를 얻 을 수 있다.다음은 구체 적 인 기능 실현 을 시작 합 니 다.
먼저 알 리 페 이 개발 문서,기본 기능->회원 정보 획득->빠 른 접속 을 살 펴 보 겠 습 니 다.우 리 는 네 번 째 단계 의 첫 번 째 단 계 를 보고 샌 드 박스 환경 에서 URL 조합 을 살 펴 보 겠 습 니 다.

<a href="https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=      APPID&scope=auth_user&redirect_uri=http://127.0.0.1:8080/alipayTest/return_url.jsp" >    </a><br/>
여기 서 주의해 야 할 것 은 scope 에 대한 설명 입 니 다.
  • auth_base:authbase 가 scope 에서 시작 한 웹 페이지 권한 수 여 는 페이지 에 들 어간 사용자 의 userId 를 가 져 오 는 데 사용 되 며,침묵 권한 수 여 를 받 고 자동 으로 리 셋 페이지 로 이동 합 니 다.사용자 가 감지 하 는 것 은 바로 리 셋 페이지 에 들 어 가 는 것 이다
  • auth_user:authuser 가 scope 를 위 한 웹 페이지 인증 은 사용자 의 기본 정 보 를 얻 는 데 사 용 됩 니 다(예 를 들 어 프로필 사진,닉네임 등).그러나 이러한 권한 수 여 는 사용자 가 수 동 으로 동의 해 야 합 니 다.사용자 가 동의 한 후에 권한 을 수 여 받 은 후에 이 사용자 의 기본 정 보 를 얻 을 수 있 습 니 다
  • 다음은 returnurl.jsp 파일:
    
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.util.Map"%>
    <%@ page import="com.alipay.api.*"%>
    <%@ page import="com.alipay.api.request.*"%>
    <%@ page import="com.alipay.api.response.*"%>
    <html>
     <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>             </title>
     </head>
     <body>
    <%
     //     GET      
     Map<String,String> params = new HashMap<String,String>();
     Map requestParams = request.getParameterMap();
     for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
      String name = (String) iter.next();
      String[] values = (String[]) requestParams.get(name);
      String valueStr = "";
      for (int i = 0; i < values.length; i++) {
       valueStr = (i == values.length - 1) ? valueStr + values[i]
         : valueStr + values[i] + ",";
      }
      //    ,            。  mysign sign              
      valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
      params.put(name, valueStr);
     }
     //            ,                    (      )//
     //      
     String app_id = new String(request.getParameter("app_id").getBytes("ISO-8859-1"),"UTF-8");
     out.write(app_id + "
    "); // String auth_user = new String(request.getParameter("scope").getBytes("ISO-8859-1"),"UTF-8"); out.write(auth_user + "
    "); // auth_code String auth_code = new String(request.getParameter("auth_code").getBytes("ISO-8859-1"),"UTF-8"); out.write(auth_code + "
    "); String privateKey = " "; String publicKey = " "; // auth_code access_token userId //AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do"," APPID",privateKey,"json","UTF-8",publicKey,"RSA2");// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do"," APPID",privateKey,"json","UTF-8",publicKey,"RSA2");// // AlipaySystemOauthTokenRequest requestLogin2 = new AlipaySystemOauthTokenRequest(); requestLogin2.setCode(auth_code); requestLogin2.setGrantType("authorization_code"); try { AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(requestLogin2); out.write("<br/>AccessToken:"+oauthTokenResponse.getAccessToken() + "
    "); // AlipayClient alipayClientUser = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", "2016073100131450", privateKey, "json", "UTF-8", publicKey, "RSA2"); AlipayUserInfoShareRequest requestUser = new AlipayUserInfoShareRequest(); try { AlipayUserInfoShareResponse userinfoShareResponse = alipayClient.execute(requestUser, oauthTokenResponse.getAccessToken()); out.write("<br/>UserId:" + userinfoShareResponse.getUserId() + "
    ");// ID out.write("UserType:" + userinfoShareResponse.getUserType() + "
    ");// out.write("UserStatus:" + userinfoShareResponse.getUserStatus() + "
    ");// out.write("Email:" + userinfoShareResponse.getEmail() + "
    ");// Email out.write("IsCertified:" + userinfoShareResponse.getIsCertified() + "
    ");// out.write("IsStudentCertified:" + userinfoShareResponse.getIsStudentCertified() + "
    ");// } catch (AlipayApiException e) { // e.printStackTrace(); } } catch (AlipayApiException e) { // e.printStackTrace(); } %> </body> </html>
    여기 서 저 희 는 샌 드 박스 모드 를 통 해 알 리 페 이 제3자 로그 인 을 하고 사용자 의 권한 을 수 여 받 은 내용 을 공유 하 겠 습 니 다.파트너 는 어서 가서 해 보 세 요.
    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기