ホームページ  >  記事  >  バックエンド開発  >  QQ クイック ログインを実装するための PHP メソッド

QQ クイック ログインを実装するための PHP メソッド

高洛峰
高洛峰オリジナル
2016-12-30 13:49:352149ブラウズ

前書き:

PHP は QQ クイック ログインを実装し、3 つのメソッドをリストします

メソッド 1: プロセス指向、コールバック アドレスと最初のトリガー ログインはメソッド ページに記述されます [if 判定のため]、

メソッド 2、 3: オブジェクト指向

1. まず、ログイン メソッドを呼び出して Tencent にリクエストを送信します。
2. Tencent は、この Web サイトの対応する固有のパラメーター OPENID と ACCESSTOKEN を送信し、対応するコールバック ページに戻ります。コールバック ページは Tencent のパラメータを受け取ります。これら 2 つのパラメータを通じて、ユーザーのデータのクエリなど、対応するリクエストが発行されます。
4. Tencent はユーザーのデータを返すなどの対応する操作を実行します

理解していなくても、以下の手順に従って確実に実行してください。


事前準備:

テンセントの機能を使う時は必ず挨拶が必要です!

QQインターネットホームページ: http://connect.qq.com/

ウェブサイトに入ったら、次の操作を行ってください:

1. 公式ウェブサイトにアクセスします

QQ クイック ログインを実装するための PHP メソッド

2. [ウェブサイト] の作成を申請します。アプリケーション

QQ クイック ログインを実装するための PHP メソッド 3. 必要に応じて情報を入力します

Web サイトのアドレスに注意してください: クイック ログインを設定する URL を入力します。例: http://www.test.com。 : 送信する QQ クイック ログインに記入します。Tencent があなたの情報を提供します。この情報はこのページで受け入れられます。例: http://www.test.com/accept_info.php

[アプリケーションの詳細な入力については、公式のヒントを参照してください。ここでは詳しく説明しません]

4. アプリケーションが成功したら、情報を入力します

QQ クイック ログインを実装するための PHP メソッド

最後の要件は、APP_ID、APP_KEY

QQ クイック ログインを実装するための PHP メソッドVを取得することです。 コード部分:

次のように、対応するPHPファイルに記述します

方法1、プロセス指向の方法

使用法: $app_idを設定した後, $app_secret, $my_url, 他はそのままコピーしてください。$user_data は返されたログイン情報です

コード:

//应用的APPID 
   $app_id = "你的APPID"; 
   //应用的APPKEY 
   $app_secret = "你的APPKEY"; 
   //【成功授权】后的回调地址,即此地址在腾讯的信息中有储存 
   $my_url = "你的回调网址"; 
  
   //Step1:获取Authorization Code 
   session_start(); 
   $code = $_REQUEST["code"];//存放Authorization Code 
   if(empty($code)) 
   { 
    //state参数用于防止CSRF攻击,成功授权后回调时会原样带回 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); 
    //拼接URL 
    $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
     . $_SESSION['state']; 
    echo("<script> top.location.href=&#39;" . $dialog_url . "&#39;</script>"); 
   } 
  
   //Step2:通过Authorization Code获取Access Token 
   if($_REQUEST[&#39;state&#39;] == $_SESSION[&#39;state&#39;] || 1) 
   { 
    //拼接URL 
    $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret . "&code=" . $code; 
    $response = file_get_contents($token_url); 
    if (strpos($response, "callback") !== false)//如果登录用户临时改变主意取消了,返回true!==false,否则执行step3 
    { 
     $lpos = strpos($response, "("); 
     $rpos = strrpos($response, ")"); 
     $response = substr($response, $lpos + 1, $rpos - $lpos -1); 
     $msg = json_decode($response); 
     if (isset($msg->error)) 
     { 
      echo "<h3>error:</h3>" . $msg->error; 
      echo "<h3>msg :</h3>" . $msg->error_description; 
      exit; 
     } 
    } 
  
    //Step3:使用Access Token来获取用户的OpenID 
    $params = array(); 
    parse_str($response, $params);//把传回来的数据参数变量化 
    $graph_url = "https://graph.qq.com/oauth2.0/me?access_token=".$params[&#39;access_token&#39;]; 
    $str = file_get_contents($graph_url); 
    if (strpos($str, "callback") !== false) 
    { 
     $lpos = strpos($str, "("); 
     $rpos = strrpos($str, ")"); 
     $str = substr($str, $lpos + 1, $rpos - $lpos -1); 
    } 
    $user = json_decode($str);//存放返回的数据 client_id ,openid 
    if (isset($user->error)) 
    { 
     echo "<h3>error:</h3>" . $user->error; 
     echo "<h3>msg :</h3>" . $user->error_description; 
     exit; 
    } 
    //echo("Hello " . $user->openid); 
    //echo("Hello " . $params[&#39;access_token&#39;]); 
  
    //Step4:使用<span style="font-family: Arial, Helvetica, sans-serif;">openid,</span><span style="font-family: Arial, Helvetica, sans-serif;">access_token来获取所接受的用户信息。</span> 
    $user_data_url = "https://graph.qq.com/user/get_user_info?access_token={$params[&#39;access_token&#39;]}&oauth_consumer_key={$app_id}&openid={$user->openid}&format=json"; 
      
    $user_data = file_get_contents($user_data_url);//此为获取到的user信息 
    } 
    else
    { 
     echo("The state does not match. You may be a victim of CSRF."); 
    }

クラス QQ_LoginAction.class を使用したオブジェクト指向の方法 2 つ
使用方法:
1 を正しく設定します。 QQ_LoginAction.class の APPKEY CALLBACK (コールバック URL)

2. 呼び出しメソッドのコードは次のとおりです:

$qq_login = new \Component\QQ_LoginAction();    //引入此类文件即可 
$qq_login->qq_login();          //调用登录方法,向腾讯发出快速登录请求

3. コールバック ページのコードは次のとおりです: $user_data は返されるユーザー データです。
5.QQ_LoginAction.class.php ファイルコード: [ThinkPHP3.2 使用]
$qc = new \Component\QQ_LoginAction(); 
$acs = $qc->qq_callback();<span style="white-space:pre">    //access_token 
$oid=$qc->get_openid();<span style="white-space:pre">     //openid 
$user_data = $qc->get_user_info();<span style="white-space:pre">  //get_user_info()为获得该用户的信息,其他操作方法见API文档

方法 3、Tencent が提供する SDK を使用したオブジェクト指向

使用方法: Tencent SDK、API は詳細に記述されているため説明しません詳細

アドレス: http://wiki.connect.qq.com/%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5%E6%A6%82%E8% BF%B0


このようにして、実際には非常に簡単にQQクイックログインが実現します。

不明な点がある場合は、公式の紹介文を読んで詳細を確認してください。


ヒント: QQ クイック ログインをローカルでテストする方法
方法: HOST 構成ファイルを変更します

1. C:WindowsSystem32driversetchost を開きます

2。 www .test.com
これで操作は完了です。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

PHP を使用して QQ クイック ログインを実装する方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。