개발 전략_서버사이드


선행 조건 읽기

이 개발 가이드는 인증 코드를 사용하여 액세스 토큰을 얻는 인증 확인 프로세스를 기반으로 합니다. 웹/왑 웹사이트와 같이 웹 서버에서 액세스해야 하는 애플리케이션에 적합합니다.

이 개발 가이드를 읽기 전에 [QQ 로그인] 인증 코드를 사용하여 액세스 토큰 얻기를 읽고 인증 프로세스를 이해하세요.

1. 경험해 보세요

참고:
이 경험은 서버리스 모드를 기반으로 하지만 경험 효과는 서버 모드와 동일합니다.

1. 브라우저 접속: http://qzs.qq.com/qzone/openapi/client.html.
2. 페이지에서 "로그인" 버튼을 클릭하세요:
Connect_logo_7.png
3. 팝업 로그인 상자에 QQ 계정과 비밀번호를 입력하세요:
OAuth_guide_V2_4.png
4. 로그인에 성공하면, 지정된 콜백 주소로 이동하세요. 액세스 토큰 포함:
OAuth_guide_V2_5.png

2. 빨리 시작하세요

준비

1. 접속 신청
2. 홈페이지와 Qzone의 원활한 연결을 위해 서버에서 openapi.qzone.qq.com을 ping해 주세요.

1단계: QQ 로그인 버튼 배치

웹사이트에서 "QQ 로그인" 버튼 이미지를 다운로드하고 UI 사양에 따라 페이지의 적절한 위치에 버튼을 배치해야 합니다.
버튼 아이콘 다운로드 버튼 배치 사양

2단계: 인증 코드 받기

1. 브라우저를 열고 다음 주소로 이동합니다(client_id,redirect_uri,scope 및 기타 매개 변수 값을 자신의 것으로 바꾸십시오):

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]



2. 이미 로그인한 경우 확인 페이지가 나타납니다. 로그인하지 않은 경우 아래와 같이 로그인 페이지가 나타납니다.
OAuth_guide_V2_3.png
3. 로그인에 성공하면 사용자에게 인증을 안내하는 인증 상자가 나타납니다. 인증되지 않은 OpenAPI에 접근할 수 있는 시간) 아래와 같이 인증 페이지가 나타납니다.
OAuth_guide_V2_6.png
참고:
사용자가 "건너뛰기"를 클릭하면 콜백 주소로 이동하고 기본 아바타, 닉네임 및 성별로 돌아갑니다. .
타사 애플리케이션이 인증 항목을 제어하는 ​​것이 좋습니다. 즉, 사용해야 하는 OpenAPI 이름만 매개변수 범위에 전달됩니다. 인증 항목이 많을수록 사용자가 인증을 거부할 확률이 높아지기 때문입니다.

4. 사용자가 승인을 위해 "확인"을 클릭하면 지정된 리디렉션_uri로 성공적으로 점프하고 승인 코드를 따릅니다(이 코드는 10분 이내에 만료됩니다).
예를 들어 콜백 주소가 www.qq.com/my.php이면 다음으로 이동합니다.

http://www.qq.com/my.php?code=520DD95263C1CFEA0870FBB66E**** **

참고:
콜백 주소는 해당 웹사이트의 홈페이지나 웹사이트의 사용자 센터로 설정하는 것이 좋습니다.

3단계: 인증 코드를 통해 액세스 토큰 받기

1. 다음 주소로 요청을 보냅니다(매개변수 값을 원하는 값으로 바꾸세요. 매개변수 설명은 여기를 참조하세요):

https:/ / graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[YOUR_APP_ID]&client_secret=[YOUR_APP_Key]&code=[The_AUTHORIZATION_CODE]&state=[The_CLIENT_STATE]&redirect_uri=[YOUR_REDIRECT_URI]


2.

access_token=YOUR_ACCESS_TOKEN&expires_in=3600


콜백 URL(아래 샘플 코드 참조)에 해당하는 프로그램에서 요청을 수락하고 액세스 토큰을 얻는 작업을 완료할 수 있습니다.

특별 알림:
획득한 액세스 토큰의 유효 기간은 3개월이며 사용자가 다시 로그인하면 자동으로 새로 고쳐집니다.
제3자 웹사이트에서는 OpenAPI를 호출하여 사용자 정보에 액세스하고 수정할 때 나중에 사용할 수 있도록 액세스 토큰 정보를 저장할 수 있습니다.

4단계: 액세스 토큰을 사용하여 사용자의 OpenID 획득

1. 다음 주소로 요청을 보내세요. access_token 등 매개변수 값을 원하는 값으로 바꿉니다.):

https://graph.qq.com/oauth2.0/me?access_token=YOUR_ACCESS_TOKEN# 🎜🎜##🎜 🎜#

2. 사용자 OpenID를 얻고 다음과 같이 패키지를 반환합니다.



callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} );

# 🎜🎜#
단계5: 액세스 토큰 및 OpenID를 사용하여 사용자 데이터에 액세스하고 수정합니다.

1 웹사이트에서 get_user_info 인터페이스를 호출하는 것이 좋습니다. 사용자는 로그인하여 사용자의 아바타와 닉네임을 획득하고 웹사이트에 표시하여 사용자 경험을 통일시킵니다. 2. 다른 OpenAPI를 호출하여 사용자 데이터에 액세스하고 수정합니다. OpenAPI에 대한 자세한 사항은 [QQ 로그인] API 문서를 참고하시기 바랍니다.

get_user_info 인터페이스 호출을 예로 들어 보겠습니다.
(1) get_user_info의 URL로 요청을 보냅니다(access_token, appid 및 기타 매개변수 값을 자신의 값으로 바꾸세요): # 🎜🎜##🎜 🎜#

https://graph.qq.com/user/get_user_info?access_token=YOUR_ACCESS_TOKEN&oauth_consumer_key=YOUR_APP_ID&openid=YOUR_OPENID

# 🎜🎜##🎜 🎜 ##🎜🎜 #(2) 성공적인 반환 후 사용자 데이터를 얻을 수 있습니다:

{
   "ret":0,
   "msg":"",
   "nickname":"YOUR_NICK_NAME",
   ...

}


3. 샘플 코드

<?php
//앱의 APPID
$app_id = "YOUR_APP_ID";
//앱의 APPKEY
$app_secret = "YOUR _APP_KEY" ;
//인증 성공 후 콜백 주소
$my_url = "YOUR_REDIRECT_URL";

//1단계: 인증 코드 받기
session_start();
$code = $_REQUEST["code"];
if(empty($ code))
                                                         // 상태 매개변수는 CSRF 공격을 방지하는 데 사용되며 승인 성공 후 콜백 중에 그대로 반환됩니다.
        $_SESSION['state'] = md 5(uniqid(rand(), TRUE))
                             / / URL 연결
  $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
. $app_id "&redirect_uri=" . . $ _SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}

 //2단계: 통过인증 코드获取액세스 토큰
  if($_REQUEST['state'] == $_SESSION['state']) 
  {
//拼接URL   
     $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"
     . "클라이언트_ID=" . $app_id . "&redirect_uri=" . urlencode($my_url)
     . "&client_secret=" . $app_secret . "&코드=" . $code;
     $response = file_get_contents($token_url);
     if (strpos($response, "callback") !== false)
     {
        $lpos = strpos( 정의 ;
        $msg = json_decode($response);
        if (isset($msg->error))
        {
          에코 "<h3> 오류:</ h3>" . $msg->error;
           에코 "<h3>msg  :</h3>" . $msg->error_description;
           exit;
        }
     }

  //3단계: 액세스 토큰을 사용하여 OpenID
     $params = array();
     parse_str($response, $params);
     $graph_url = "https://graph.qq.com/oauth2.0 /me?access_token=" 
     $params['access_token'];
     $str  = file_get_contents($graph_url);
     if (strpos($str, "콜백") !== false)
     {
        $lpos = strpos( $str, "(");
        $rpos = strrpos($str, ")");
       $str  = substr($str, $lpos + 1, $rpos - $lpos -1);
     }
     $user = json_decode($str);
     if (isset($user->error))
     {
        echo "<h3>error:</h3>" . $user->error;
        에코 "<h3>msg  :</h3>" . 정의 CSRF의 .");
  }
?>