PHP 에서 웨 이 보 인 터 페 이 스 를 호출 하여 웨 이 보 로그 인 을 실현 하 는 방법 예시

평소 프로젝트 개발 과정 에서 본 사이트 계 정 을 등록 해 로그 인 하 는 것 외 에 제3자 인 터 페 이 스 를 이용 해 사이트 에 접속 할 수 있다.이곳 은 웨 이 보 로그 인 을 예 로 들 수 있다.웨 이 보 로그 인 은 신분 인증,사용자 관계 와 내용 전 파 를 포함한다.사용자 가 웨 이 보 계 정 을 사용 하여 제3자 사 이 트 를 방문 하고 내용 을 공유 하 며 정 보 를 동기 화 할 수 있 도록 합 니 다.
1.먼저 권한 을 수 여 받 아야 하 는 사용 자 를 다음 주소 로 안내 해 야 합 니 다.
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
사용자 가 권한 수여 에 동의 하면 페이지 는 YOUR 로 이동 합 니 다.REGISTERED_REDIRECT_URI/?code=CODE:
2.그 다음 에 위 에서 얻 은 code 에 따라 Access Token 을 바 꿔 야 합 니 다.
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
반환 값:
JSON

{
 "access_token": "SlAV32hkKG",
 "remind_in": 3600,
 "expires_in": 3600 
}
3.마지막 으로 획득 한 OAuth 2.0 Access Token 을 사용 하여 API 를 호출 하여 사용자 의 신분 을 얻 고 사용자 의 로그 인 을 완성 합 니 다.
할 말 이 많 지 않 으 니 코드 를 직접 입력 하 세 요.
편 의 를 위해 서,우 리 는 먼저 get 과 post 를 응용 프로그램의 common.php 에 봉인 합 니 다.
공공 파일 common.php 적용:

function get( $url, $_header = NULL )
{
  $curl = curl_init();
  //curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false); 
  if( stripos($url, 'https://') !==FALSE )
  {
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  }

  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_HEADER, 0);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  if ( $_header != NULL )
  {
    curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);
  }
  $ret  = curl_exec($curl);
  $info  = curl_getinfo($curl);
  curl_close($curl);

  if( intval( $info["http_code"] ) == 200 )
  {
    return $ret;
  }

  return false;
}
/*
 * post method
 */
function post( $url, $param )
{
   $oCurl = curl_init ();
  curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);
  if (stripos ( $url, "https://" ) !== FALSE) {
    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );
    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );
  }
  
  curl_setopt ( $oCurl, CURLOPT_URL, $url );
  curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $oCurl, CURLOPT_POST, true );
  curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param );
  $sContent = curl_exec ( $oCurl );
  $aStatus = curl_getinfo ( $oCurl );
  curl_close ( $oCurl );
  if (intval ( $aStatus ["http_code"] ) == 200) {
    return $sContent;
  } else {
    return false;
  }
}
컨트롤 러 처리 코드 Login.php:

class Login extends \think\Controller 
{
  public function index()
  {
    $key = "****";
    $redirect_uri = "***        ***/?backurl=***      ***/home/login/webLogin?";
    //              
    $redirect_uri = urlencode($redirect_uri);
    $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}";
    $this -> assign('wb_url',$wb_url);
    return view('login');
  }


  public function webLogin(){
    $key = "*****";
    //  code 
    $code = input('get.code');
    //  Access Token: post          : client_id, client_secret,redirect_uri, code
    $secret = "********";
    $redirect_uri = "********";
    $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}";
    $token = post($url, array());
    $token = json_decode($token, true);
    //       : get  ,    : access_token, uid
    $url = "https://api.weibo.com/2/users/show.json?access_token={$token['access_token']}&uid={$token['uid']}";
    $info = get($url);
    if($info){
      echo "<p>    </p>";
    }
  }
}
템 플 릿 코드 login.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>    </title>
</head>
<body>
<a href="{$wb_url}" rel="external nofollow" >          </a>
</body>
</html>
효과 그림:



이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기