알 리 페 이 개발 플랫폼 의 제3자 권한 수여 로그 인 및 사용자 정보 획득
11279 단어 제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 에 대한 설명 입 니 다.
<%@ 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자 로그 인 을 하고 사용자 의 권한 을 수 여 받 은 내용 을 공유 하 겠 습 니 다.파트너 는 어서 가서 해 보 세 요.이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
heartbeat nginx 고 사용 가능 한 클 러 스 터・ 고가 용 원리: 두 대의 기계 A 와 B 는 정상적으로 A 가 서 비 스 를 제공 하고 B 가 방치 되 어 있다. · 하트 비트 원리: 심장 박동 검사 와 자원 연결 두 부분.클 러 스 터 의 호스트 는 서로 메...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.