플랫폼 기술-사용자 인증 소개
로그인 인증
애플리케이션이 Taobao 개방형 플랫폼에 연결할 때 사용자 개인 정보 보호 데이터(예: 제품, 주문 등)를 확보해야 하는 경우, 사용자 데이터의 보안 및 개인 정보 보호를 위해 애플리케이션은 사용자의 승인을 얻어야 합니다. 즉, 사용자 데이터에 액세스하기 위한 액세스 토큰(원본 SessionKey)을 얻어야 합니다. 이 경우 애플리케이션은 Taobao 계정을 사용하여 "로그인 인증" 프로세스를 통해 사용자를 안내해야 합니다. 이 프로세스는 국제적으로 통용되는 OAuth2.0 표준 프로토콜을 사용자 인증 및 권한 부여 프로토콜로 사용하며 웹사이트, 모바일 클라이언트 및 데스크톱 클라이언트를 지원합니다.
현재 Taobao OAuth2.0 서비스는 액세스 토큰(인증 토큰)을 얻는 두 가지 방법, 즉 서버 측 흐름과 클라이언트 측 흐름을 지원합니다. 자세한 내용은 다음 지침을 참조하세요.
참고: Taobao ID(Taobao 계정) 제품은 Taobao 구매자에게 Taobao 멤버십 서비스를 제공하기 위해 Alibaba 그룹의 비공식 채널에서 사용될 수 없습니다. (예: 주문 조회, 물류 추적 등) 불법 사용이 발견되면 개방형 플랫폼은 즉시 앱키의 타오바오 ID 사용 권한을 취소합니다.
注:Taobao ID(淘帐号)产品不得用于阿里巴巴集团非官方渠道为淘宝买家提供淘宝会员类服务(如:订单查询、物流追踪 等),一旦发现违规使用,开放平台将立即收回该appkey的Taobao ID使用权限。
特别注意
此文档描述的授权页面仅适用于PC端,如果您的页面是在手机淘宝/天猫客户端中被访问,请参考这里。如果您的页面是在H5手机浏览器中被访问,请参考这里。
一、Server-side flow
此流程要求ISV应用有Web Server应用,能够保存应用本身的密钥以及状态,可以通过https直接访问淘宝的授权服务器。
1、请求入口地址
1)获取授权码(code)
正式环境:https://oauth.taobao.com/authorize
沙箱环境:https://oauth.tbsandbox.com/authorize
2)获取访问令牌(access_token)
正式环境:https://oauth.taobao.com/token
沙箱环境:https://oauth.tbsandbox.com/token
특별 주의이 문서에 설명된 인증 페이지는 PC 측에만 적용됩니다. 귀하의 페이지 모바일 Taobao/Tmall 클라이언트에서 액세스할 수 있습니다. 여기를 참조하세요. H5 모바일 브라우저에서 페이지에 접속하는 경우 여기를 참고하세요.
1. 서버 측 흐름
이 프로세스를 수행하려면 ISV 애플리케이션에 웹 서버 애플리케이션이 있어야 하며, 이를 통해 서버 측의 키와 상태를 저장할 수 있습니다. https를 통해 Taobao의 인증 서버에 직접 액세스할 수 있습니다. #🎜🎜#1. 요청 항목 주소 #🎜🎜##🎜🎜##🎜🎜#1) 인증 코드(코드) 획득 #🎜🎜# 형식 환경: https://oauth.taobao.com/authorize#🎜🎜# 샌드박스 환경: https://oauth.tbsandbox.com / 승인#🎜🎜#2) 액세스 토큰 획득(access_token)#🎜🎜# 공식 환경: https://oauth.taobao.com/token#🎜🎜# 샌드박스 환경: https://oauth.tbsandbox.com/token
#🎜 🎜##🎜🎜##🎜🎜#2. 승인 단계#🎜🎜##🎜🎜##🎜🎜# 다음은 정식 환경에서 access_token을 얻는 예입니다. 입구 주소 등 관련 데이터는 샌드박스의 해당 입구 주소로 대체되며, 작업 프로세스는 형식적인 환경과 일치합니다. #🎜🎜# 실제로 인증 작업을 수행할 때, 테스트 데이터인 client_id, client_secret, Redirect_uri는 본인이 생성한 실제 애플리케이션 데이터에 맞게 교체되어야 하며, 직접 테스트를 위해 예시에서 제시한 값을 사용할 수는 없습니다. 실제 테스트 효과에 영향을 미치지 않도록. 아래 그림은 서버 측 흐름 승인 방법 흐름도를 보여줍니다. 다음은 흐름도를 기반으로 단계별로 설명합니다. #🎜🎜##🎜🎜##🎜🎜#1) 스플라이싱 인증 url
스플라이싱 사용자 인증을 위해서는 해당 URL에 대한 접근이 필요하며, 예시와 매개변수 설명은 다음과 같습니다:
https:/ /oauth.taobao.com/authorize?response_type=code&client_id=23075594&redirect_uri=http://www.oauth.net/2/&state=1212&view=web
#🎜 🎜#3) 코드 받기2) 사용자가 인증을 위해 로그인하도록 안내 사용자가 브라우저를 통해 위 인증 URL에 액세스하도록 안내하고, 다음 로그인 페이지 팝업됩니다. 사용자는 계좌번호와 비밀번호를 입력하고 "로그인" 버튼을 클릭하여 인증 페이지로 들어갑니다.
사용자가 인증 대신 "취소" 버튼을 클릭하면 다음 결과가 반환됩니다. 여기서 error는 오류 코드이고 error_description은 오류 설명입니다. 아래 그림과 같이:
설명 : 은 서비스 마켓(
fuwu.taobao.com#🎜)을 게시할 수 있습니다. 🎜# ) 애플리케이션, 애플리케이션이 온라인 상태가 된 후 사용자가 애플리케이션을 구매하고 "나의 서비스--지금 사용"(아래 그림)을 통해 애플리케이션에 액세스하면 시스템이 자동으로 인증 페이지로 이동합니다(따라서 접합이 필요하지 않습니다). 이런 방식으로 애플리케이션에 액세스하려면) url) 코드를 받는 데만 주의하세요. 동시에 코드를 반환할 때 다음과 유사하게 상태를 통과한 주문 서비스와 관련된 정보도 반환합니다. state=versionNo:1;itemCode:xxxxx(versionNo는 애플리케이션 버전 번호, itemCode 애플리케이션 충전 코드입니다) # 🎜🎜#
4) access_token 교환
linux 컬 명령을 사용하여 획득 access_token(인증 토큰)은 다음과 같습니다. 애플리케이션의 경우 여기에서 문서 및 샘플 코드
를 참조할 수 있습니다. **示例**
curl -i -d "code=OxlukWofLrB1Db1M6aJGF8x2332458&grant_type=authorization_code&client_id=23075594&
cl ient _secret=69a1469a1469a1469a14a9bf269a14&redirect_uri=http://www.oauth. net /2/ "https://oauth.taobao.com/token
{ "w2_expires_in": 0, "taobao_user_id": "263685215", "taobao_user_nick": 5 %95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752", "w1_expires_in": 1800, "re_expires_in": 0, "r2_expires_in": 0, "expires_in": 86400, "token_type": "Bearer", "refresh_token": "6200e1909ca29b0 4685c49d67f5ZZ3675347c0c6d5abccd263685215", "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215", "r1_expires_in": 1800 }#🎜🎜 # |
보안 수준 | API 수준 | 공식 환경 테스트 | 온라인 및 실행 중 | 새로 고침 가능 여부 | 새로 고침 시간 |
---|---|---|---|---|---|
레벨 3 | R1 | 24시간 | 동일 주문 시간대로 | 네 | 온라인 신청은 구독 기간과 일치하며 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 3 | R2 | 24시간 | 구독 기간 동일 | 예 | 온라인 신청은 구독 기간과 동일하며, 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 3 | W1 | 24시간 | 주문 시간과 동일 | 예 | 온라인 신청은 주문 시간에 맞춰 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 3 | W2 | 24시간 | 주문 시간 동일 | 예 | 온라인 신청은 주문 시간과 동일합니다. 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 2 | R1 | 24시간 | 주문 시간 동일 | 예 | 온라인 신청은 구독 시간에 맞춰 진행되며, 공식 환경 테스트는 24시간 동안 유효합니다. |
레벨 2 | R2 | 24시간 | 72시간 | 예 | 온라인 지원은 구독 시간과 일치하며, 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 2 | W1 | 24시간 | 주문 시간 동일 | 예 | 온라인 신청은 주문 시간과 일치하며 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 2 | W2 | 30분 | 30분 | 아니요 | |
레벨 1 | R1 | 24시간 | 구독 시간 동일 | 예 | 온라인 신청은 구독 시간과 일치하며 공식 환경 테스트는 24시간 동안 유효합니다 |
1급 | R2 | 24시간 | 24시간 | No | |
1급 | W1 | 24시간 | 주문시간과 동일 | 예 | 온라인 신청 및 주문시간 상시, 공식 환경 테스트는 24시간 동안 유효합니다 |
레벨 1 | W2 | 5분 | 5분 | No | |
레벨 0 | R1 | 30분 | 30분 | 아니요 | |
레벨 0 | R2 | 0분 | 0분 | No | |
레벨 0 | W1 | 30분 | 30분 | 아니요 | |
레벨 0 | W2 | 0분 | 0분 | No |
예제 코드
1. access_token 예제 얻기
예제 코드는 모두 SDK 기반이므로 SDK 다운로드 및 사용 지침을 참조하세요.
1, JAVA 예제
import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.taobao.api.internal.util.WebUtils; //引用top sdk public class open_oauth { public static void main(String[] args) { String url="https://oauth.taobao.com/token"; Map<String,String> props=new HashMap<String,String>(); props.put("grant_type","authorization_code"); /*测试时,需把test参数换成自己应用对应的值*/ props.put("code","test"); props.put("client_id","test"); props.put("client_secret","test"); props.put("redirect_uri","http://www.test.com"); props.put("view","web"); String s=""; try{s=WebUtils.doPost(url, props, 30000, 30000); System.out.println(s); }catch(IOException e){ e.printStackTrace();} } }
2, PHP 예제
<?php /*测试时,需把test参数换成自己应用对应的值*/ $url = 'https://oauth.taobao.com/token'; $postfields= array('grant_type'=>'authorization_code', 'client_id'=>'test', 'client_secret'=>'test', 'code'=>'test', 'redirect_uri'=>'http://www.test.com'); $post_data = ''; foreach($postfields as $key=>$value){ $post_data .="$key=".urlencode($value)."&";} $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); //指定post数据 curl_setopt($ch, CURLOPT_POST, true); //添加变量 curl_setopt($ch, CURLOPT_POSTFIELDS, substr($post_data,0,-1)); $output = curl_exec($ch); $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $httpStatusCode; curl_close($ch); var_dump($output); ?>
3, .NET 예제
namespace Oauth2._0 { class Program { static void Main(string[] args) { WebUtils webUtils = new WebUtils(); IDictionary<string, string> pout = new Dictionary<string, string>(); pout.Add("grant_type", "authorization_code"); pout.Add("client_id", "test"); pout.Add("client_secret", "test"); pout.Add("code", "test"); pout.Add("redirect_uri", "http://www.test.com"); string output = webUtils.DoPost("https://oauth.taobao.com/token", pout); Console.Write(output); Console.ReadLine(); } } }
2. Refresh_token 새로고침 예시다음은 SDK의 Java 예제를 기반으로 다른 언어에서도 유사한 토큰 획득 방법을 참조할 수 있으며 동시에 테스트할 때 테스트 매개변수를 애플리케이션에 해당하는 실제 값으로 대체해야 합니다.
import java.io.IOException; import java.util.HashMap; import java.util.Map; import com.taobao.api.internal.util.WebUtils; public class test_refresh { public static void main(String[] args) { String url="https://oauth.taobao.com/token"; Map<String,String> props=new HashMap<String,String>(); props.put("grant_type","refresh_token"); props.put("refresh_token","test"); props.put("client_id","test"); props.put("client_secret","test"); String s=""; try{s=WebUtils.doPost(url, props, 30000, 30000); System.out.println(s); }catch(IOException e){ e.printStackTrace(); } }위는 responseJson을 객체로 변환하거나, 여기서 access_token 필드와 새 새로 고침 토큰을 직접 추출합니다.
refresh_token은 결과 콘텐츠 예제를 반환합니다.
{
"w2_expires_in": 0, "taobao_user_id": "263685215", "taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752", "w1_expires_in": 1800, "re_expires_in": 0, "r2_expires_in": 0, "expires_in": 86400, "token_type": "Bearer", "refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215", "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215", "r1_expires_in": 1800 } |