首页 > 后端开发 > php教程 > QQ登录获取固定值 ,在线等、、、

QQ登录获取固定值 ,在线等、、、

WBOY
发布: 2016-06-23 14:16:27
原创
899 人浏览过

QQ Color QQ登录






ret : 0
msg :
nickname : Wi_H
gender : 女
figureurl : http://qzapp.qlogo.cn/qzapp/100330589/***/30
is_yellow_vip : 0
vip : 0
yellow_vip_level : 0
level : 0
is_yellow_year_vip : 0

以上是登录返回的值,貌似都是不固定的。

QQ登录中返回的值哪些是固定的?用作帐号的ID。

话说  OpenID 是固定的,怎样调用?





回复讨论(解决方案)

账号的ID一般自动增长生成 哪怕是站外授权进来的ID

username一般用nickname  如果重复自动加个数字之类的 留待自己修改 或者直接要求所有人重新输入用户名

openid这些另外用个表存好或者直接存到用户表里

账号的ID一般自动增长生成 哪怕是站外授权进来的ID

username一般用nickname  如果重复自动加个数字之类的 留待自己修改 或者直接要求所有人重新输入用户名

openid这些另外用个表存好或者直接存到用户表里

不好意思,说错了!是【username】
如果使用【nickname】做帐号,当用户修改了自己的名称,那不就无法登录而需重新注册了吗?

官方说【openid】是固定的,但是我调用不到。

require_once("../login/qqConnectAPI.php");//获取API$qc = new QC();$userdata = $qc->get_user_info();//会员返回用户资料$userdata["gender"];$userdata["nickname"];
登录后复制
登录后复制
登录后复制


只能调用到以上的几个部分。


账号的ID一般自动增长生成 哪怕是站外授权进来的ID

username一般用nickname 如果重复自动加个数字之类的 留待自己修改 或者直接要求所有人重新输入用户名

openid这些另外用个表存好或者直接存到用户表里

不好意思,说错了!是【username】
如果使用【nickname】做帐号,当用户修改了自己的名称,那不就无法登录而需重新注册了吗?

官方说【openid】是固定的,但是我调用不到。

require_once("../login/qqConnectAPI.php");//获取API$qc = new QC();$userdata = $qc->get_user_info();//会员返回用户资料$userdata["gender"];$userdata["nickname"];
登录后复制
登录后复制
登录后复制


只能调用到以上的几个部分。

1.用QQ登录你网站的用户就算修改了QQ昵称,也不会影响登录你的网站,因为登录不是根据昵称判断的.

2.你先看一下授权流程 授权过程中是会给你openid的,接住存进数据库. 如果还是找不到这一步下午我帮你看看 我们网站也用QQ登录.



账号的ID一般自动增长生成 哪怕是站外授权进来的ID

username一般用nickname 如果重复自动加个数字之类的 留待自己修改 或者直接要求所有人重新输入用户名

openid这些另外用个表存好或者直接存到用户表里

不好意思,说错了!是【username】
如果使用【nickname】做帐号,当用户修改了自己的名称,那不就无法登录而需重新注册了吗?

官方说【openid】是固定的,但是我调用不到。

require_once("../login/qqConnectAPI.php");//获取API$qc = new QC();$userdata = $qc->get_user_info();//会员返回用户资料$userdata["gender"];$userdata["nickname"];
登录后复制
登录后复制
登录后复制


只能调用到以上的几个部分。

1.用QQ登录你网站的用户就算修改了QQ昵称,也不会影响登录你的网站,因为登录不是根据昵称判断的.

2.你先看一下授权流程 授权过程中是会给你openid的,接住存进数据库. 如果还是找不到这一步下午我帮你看看 我们网站也用QQ登录.


你好,我的扣扣:847149513

或者您留一下你的QQ行不

QQ号好害羞的不能轻易暴露啊
给你代码吧
跟api文档描述一样 先用appid appkey等获取access_token 再根据这个获取openid
关键是你要看明白api文档.... 这个别人没办法帮你理解啊

代码很简单容易明白的

function qq_callback(){    //debug    //print_r($_REQUEST);    //print_r($_SESSION);    if($_REQUEST['state'] == $_SESSION['state']) //csrf    {        $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"            . "client_id=" . $_SESSION["appid"]. "&redirect_uri=" . urlencode($_SESSION["callback"])            . "&client_secret=" . $_SESSION["appkey"]. "&code=" . $_REQUEST["code"];        $response = get_url_contents($token_url);        if (strpos($response, "callback") !== false)        {            $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;            }        }        $params = array();        parse_str($response, $params);        //debug        //print_r($params);        //set access token to session        $_SESSION["access_token"] = $params["access_token"];    }    else     {        echo("The state does not match. You may be a victim of CSRF.");    }}function get_openid(){    $graph_url = "https://graph.qq.com/oauth2.0/me?access_token="         . $_SESSION['access_token'];    $str  = get_url_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);    if (isset($user->error))    {        echo "<h3>error:</h3>" . $user->error;        echo "<h3>msg  :</h3>" . $user->error_description;        exit;    }    //debug    //echo("Hello " . $user->openid);    //set openid to session    $_SESSION["openid"] = $user->openid;}//QQ登录成功后的回调地址,主要保存access tokenqq_callback();//获取用户标示idget_openid();
登录后复制
登录后复制

QQ号好害羞的不能轻易暴露啊
给你代码吧
跟api文档描述一样 先用appid appkey等获取access_token 再根据这个获取openid
关键是你要看明白api文档.... 这个别人没办法帮你理解啊

代码很简单容易明白的

function qq_callback(){    //debug    //print_r($_REQUEST);    //print_r($_SESSION);    if($_REQUEST['state'] == $_SESSION['state']) //csrf    {        $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"            . "client_id=" . $_SESSION["appid"]. "&redirect_uri=" . urlencode($_SESSION["callback"])            . "&client_secret=" . $_SESSION["appkey"]. "&code=" . $_REQUEST["code"];        $response = get_url_contents($token_url);        if (strpos($response, "callback") !== false)        {            $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;            }        }        $params = array();        parse_str($response, $params);        //debug        //print_r($params);        //set access token to session        $_SESSION["access_token"] = $params["access_token"];    }    else     {        echo("The state does not match. You may be a victim of CSRF.");    }}function get_openid(){    $graph_url = "https://graph.qq.com/oauth2.0/me?access_token="         . $_SESSION['access_token'];    $str  = get_url_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);    if (isset($user->error))    {        echo "<h3>error:</h3>" . $user->error;        echo "<h3>msg  :</h3>" . $user->error_description;        exit;    }    //debug    //echo("Hello " . $user->openid);    //set openid to session    $_SESSION["openid"] = $user->openid;}//QQ登录成功后的回调地址,主要保存access tokenqq_callback();//获取用户标示idget_openid();
登录后复制
登录后复制


我用的是官方的 SDK 、、、http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD

下载下来的SDK文件夹每个文件都看了吗?

connect2.0/API/class/Oauth.class.php里边就有这两个方法 qq_callback()  get_openid()  53行 94行

说个笨方法 119行return openid之前,将其存进数据库 不就获取了openid了吗?

授权流程 API文档 sdk文件 好好看一遍 有具体不明白的再进一步交流  我觉得还是比较易懂的.  关键自己要弄清楚这个流程  这就是开发的过程.

下载下来的SDK文件夹每个文件都看了吗?

connect2.0/API/class/Oauth.class.php里边就有这两个方法 qq_callback()  get_openid()  53行 94行

说个笨方法 119行return openid之前,将其存进数据库 不就获取了openid了吗?

授权流程 API文档 sdk文件 好好看一遍 有具体不明白的再进一步交流  我觉得还是比较易懂的.  关键自己要弄清楚这个流程  这就是开发的过程.

多谢,其实自己早就调出来了!只不过出了差错!以为调出来的是错误的 openid、
细节决定成败呀

  调出来就好

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板