php QQ登录
基本原理:
就是获取唯一的openid,此值只要与自己数据库表中的值对应,就说明是此用户,
没有,则说明是新用户,其实就是找对应关系,因为openid与QQ号是唯一对应关系
放置按钮:
如在首页 index.php 中放如下代码(即放按钮)
<a href="qq/index.php">QQ登录</a> 然后跳转到 qq/index.php 文件中,代码如下:
<?php
$url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]"
header("Location:" . $url); //接着会跳转到 redirect_uri=[YOUR_REDIRECT_URI] 里面指定的值 [YOUR_REDIRECT_URI],如 qq/callback.php
//同时会带有 ?code=value 的值 //在qq/callback.php代码如下: $code = $_GET['code'];
$url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[YOUR_APPID]&client_secret=[APP KEY]&code=". $code ."&state=lin3615&redirect_uri=" . urlencode("http://www.xxxx.net/qq/callback.php");
// get_contents($url)用用获取返回的数据
function get_contents($url){
if (ini_get("allow_url_fopen") == "1") {
$response = file_get_contents($url);
}else{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
curl_close($ch);
} return $response;
}
$response = get_contents($url);
// 解析数据,里面有$access_token值
parse_str($response);
//callback($str)把json格式转为 数组形式
function callback($str)
{
return json_decode($str, true);
}
$url = "https://graph.qq.com/oauth2.0/me?access_token=" . $access_token;
$callback = get_contents($url);
$callback = str_replace("(", "('", $callback);
$callback = str_replace(")", "')", $callback);
eval('$data='.$callback); // openid
$openid = $data['openid']; $url = "https://graph.qq.com/user/get_user_info?access_token=$access_token&oauth_consumer_key=[YOUR_APPID]&openid=" . $openid; $dd = get_contents($url);
$dd = json_decode($dd, true);
print_r($dd);
//其中 $dd 就是相关的QQ信息数组 /*
以下就连接数据库;
假如如下数据表
user:用户表,正常的非QQ登录,字段有:
uid 自增
name 用户名
password 密码
..... qqconnect:QQ连接表,QQ连接时用的,字段有:
quid uid与 user表中的 uid 对应
openid $opendid
access_token $access_token
...... 连接数据库
*/
$link = mysql_connect();
$sql = "select quid from qqconnect where openid= '{$openid}';
$res = mysql_query($sql, $link);
// 如是如果已经存在,
if($res && mysql_num_rows($res))
{
$row = mysql_fetch_assoc($res);
$uid = $row['quid'];
$query = "select * from user where uid = '{$uid}'";
$rr = mysql_query($query, $link);
$rrs = mysql_fetch_assoc($rr);
$_SESSION['uid'] = $rrs['uid'];
$_SESSION['name'] = $rrs['name'];
header("Location:" . 首页);
}else
{
// 不存在,就直接显示绑定表单
echo "<from>";
echo '';
echo "</from>";
}
php QQ登录的更多相关文章
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/4204284.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 腾讯开发平台 ...
- WPF简单模拟QQ登录背景动画
介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...
- 使用Java的Frame类编写的QQ登录界面
public static void main(String[] args) { Frame f = new Frame(); //关闭窗体 f.addWindowListener(new Windo ...
- React Native 接入微博、微信、QQ 登录功能
在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手 ...
- android实现第三方登录之QQ登录
首先,当然是在腾讯开放平台(http://open.qq.com/)注册成为开发者,然后获取APP ID 1.下载SDK http://wiki.open.qq.com/wiki/mobile/SDK ...
- 网站集成QQ登录功能
最近在做一个项目时,客户要求网站能够集成QQ登录的功能,以前没做过这方面的开发,于是去QQ的开放平台官网研究了一下相关资料,经过自己的艰苦探索,终于实现了集成QQ登录的功能,现在把相关的开发经验总结一 ...
- 第三方登录(QQ登录)开发流程详解
原文:http://www.cnblogs.com/it-cen/p/4338202.html 近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑 ...
- QQ登录类
2015-3-31 22:02:09 (同一套代码, pc端不能登录, 但是, 手机和平板都可以正常登录.....) 1. 首先是库文件, 登录->授权->token->openid ...
- 网站接入QQ登录的两种方法
第一种使用系统自带按钮登录,但是这样会弹出新窗口,不喜欢 //调用QC.Login方法,指定btnId参数将按钮绑定在容器节点中 QC.Login({ //btnId:插入按钮的节点id,必选 btn ...
随机推荐
- iBatis调用存储过程以及MySQL创建存储过程
首先是MySQL中创建存储过程的SQL -- 列出全部的存储过程 SHOW PROCEDURE STATUS; -- 查看一个已存在的存储过程的创建语句,假设此存储过程不存在,会提示SQL错误(130 ...
- 从零开始学android开发-字符如何转换整形 string 转化为int
int i = Integer.parseInt(string);
- Android提供的系统服务之--TelephonyManager(电话管理器)
Android提供的系统服务之--TelephonyManager(电话管理器) 转载请注明出处--coder-pig TelephonyManager的作用: 用于管理手机通话状态,获取电话信息(设 ...
- iOS开发——适配篇&iOS9适配
iOS9适配 1. Demo1_iOS9网络适配_ATS:改用更安全的HTTPS [摘要]iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采 ...
- 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...
- careercup-中等难度 17.4
17.4 编写一个方法,找出两个数字中最大的那一个.不得使用if-else或其他比较运算符. 解法: 我们可以通过一步步的分析来将需要用到的if-else和比较操作符去掉: If a > b, ...
- [010]转+修正---C++的贪吃蛇程序(未用面向对象封装)
在网上看到一段贪吃蛇程序,自己心痒下了下来又稍微做了一点修改. 没有用面向对象的方式来进行封装,下次准备试试. 需要在windows环境下进行编译 #include<iostream> # ...
- 将项目添加到Finder侧边栏和工具栏
转: http://www.cnblogs.com/wormday/archive/2011/05/08/2039468.html 1.在侧边栏和工具栏右键,有相应的设置选项 2.可以将项目拖到侧边栏 ...
- mysql中不同事务隔离级别下数据的显示效果--转载
事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...
- 春&风
流光飞舞中,消逝的背影连同流动的人群,早已荒凉. 谁是谁的谁?落入尘世间,只是光阴下面的一粒尘埃. 那些时光,那些爱,渐行渐远. 留在心底,淡淡的思念,如轻风一阵, 吹过 彼此的容颜.