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 是固定的,怎样调用?
QQColorQQ登录

解决方案 »

  1.   

    账号的ID一般自动增长生成 哪怕是站外授权进来的IDusername一般用nickname  如果重复自动加个数字之类的 留待自己修改 或者直接要求所有人重新输入用户名openid这些另外用个表存好或者直接存到用户表里
      

  2.   


    不好意思,说错了!是【username】
    如果使用【nickname】做帐号,当用户修改了自己的名称,那不就无法登录而需重新注册了吗?官方说【openid】是固定的,但是我调用不到。
    require_once("../login/qqConnectAPI.php");//获取API
    $qc = new QC();
    $userdata = $qc->get_user_info();//会员返回用户资料
    $userdata["gender"];
    $userdata["nickname"];
    只能调用到以上的几个部分。
      

  3.   


    不好意思,说错了!是【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登录.
      

  4.   


    不好意思,说错了!是【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行不
      

  5.   

    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 token
    qq_callback();//获取用户标示id
    get_openid();
      

  6.   


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

  7.   

    下载下来的SDK文件夹每个文件都看了吗?connect2.0/API/class/Oauth.class.php里边就有这两个方法 qq_callback()  get_openid()  53行 94行说个笨方法 119行return openid之前,将其存进数据库 不就获取了openid了吗?授权流程 API文档 sdk文件 好好看一遍 有具体不明白的再进一步交流  我觉得还是比较易懂的.  关键自己要弄清楚这个流程  这就是开发的过程.
      

  8.   


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