前書き:
PHP は QQ クイック ログインを実装し、3 つのメソッドをリストします
メソッド 1: プロセス指向、コールバック アドレスと最初のトリガー ログインはメソッド ページに記述されます [if 判定のため]、
メソッド 2、 3: オブジェクト指向
1. まず、ログイン メソッドを呼び出して Tencent にリクエストを送信します。
2. Tencent は、この Web サイトの対応する固有のパラメーター OPENID と ACCESSTOKEN を送信し、対応するコールバック ページに戻ります。コールバック ページは Tencent のパラメータを受け取ります。これら 2 つのパラメータを通じて、ユーザーのデータのクエリなど、対応するリクエストが発行されます。
4. Tencent はユーザーのデータを返すなどの対応する操作を実行します
3. 必要に応じて情報を入力します
Web サイトのアドレスに注意してください: クイック ログインを設定する URL を入力します。例: http://www.test.com。 : 送信する QQ クイック ログインに記入します。Tencent があなたの情報を提供します。この情報はこのページで受け入れられます。例: http://www.test.com/accept_info.php
[アプリケーションの詳細な入力については、公式のヒントを参照してください。ここでは詳しく説明しません]
4. アプリケーションが成功したら、情報を入力します最後の要件は、APP_ID、APP_KEY
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='" . $dialog_url . "'</script>"); } //Step2:通过Authorization Code获取Access Token if($_REQUEST['state'] == $_SESSION['state'] || 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['access_token']; $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['access_token']); //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['access_token']}&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_login = new \Component\QQ_LoginAction(); //引入此类文件即可 $qq_login->qq_login(); //调用登录方法,向腾讯发出快速登录请求
$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文档
使用方法: 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 構成ファイルを変更します
2。 www .test.com
これで操作は完了です。
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
PHP を使用して QQ クイック ログインを実装する方法に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。