コード例 #1
0
    function checkUser()
    {
        /**
		 * QQ互联登录,授权成功后会回调此地址
		 * 必须要用授权的request token换取access token
		 * 访问QQ互联的任何资源都需要access token
		 * 目前access token是长期有效的,除非用户解除与第三方绑定
		 * 如果第三方发现access token失效,请引导用户重新登录QQ互联,授权,获取access token
		 */
        //授权成功后,会返回用户的openid
        //检查返回的openid是否是合法id
        if (!is_valid_openid($_REQUEST["openid"], $_REQUEST["timestamp"], $_REQUEST["oauth_signature"])) {
            return false;
        }
        //tips
        //这里已经获取到了openid,可以处理第三方账户与openid的绑定逻辑
        //但是我们建议第三方等到获取accesstoken之后在做绑定逻辑
        //用授权的request token换取access token
        $access_str = get_access_token(QZONE_KEY, QZONE_SECRET, $_REQUEST["oauth_token"], $_SESSION['qzone']["keys"]["oauth_token_secret"], $_REQUEST["oauth_vericode"]);
        //echo "access_str:$access_str\n";
        $result = array();
        parse_str($access_str, $result);
        //error
        if (isset($result["error_code"])) {
            return false;
        }
        //获取access token成功后也会返回用户的openid
        //我们强烈建议第三方使用此openid
        //检查返回的openid是否是合法id
        if (!is_valid_openid($result["openid"], $result["timestamp"], $result["oauth_signature"])) {
            return false;
        }
        //将access token,openid保存!!
        //XXX 作为demo,临时存放在session中,网站应该用自己安全的存储系统来存储这些信息
        $_SESSION['qzone']['access_token']['oauth_token'] = $result["oauth_token"];
        $_SESSION['qzone']['access_token']['oauth_token_secret'] = $result["oauth_token_secret"];
コード例 #2
0
ファイル: qq_login.php プロジェクト: GHubgenius/qbbj
 //用授权的request token换取access token
 $access_str = get_access_token($webdb[QQ_appid], $webdb[QQ_appkey], $_GET["oauth_token"], $secret, $_GET["oauth_vericode"]);
 //echo "access_str:$access_str\n";
 $result = array();
 parse_str($access_str, $result);
 //print_r($result);
 //error
 if (isset($result["error_code"])) {
     showerr('出错了,请不要重复刷新网页' . $result["error_code"]);
     //echo "error_code = ".$result["error_code"];
     //exit;
 }
 //获取access token成功后也会返回用户的openid
 //我们强烈建议第三方使用此openid
 //检查返回的openid是否是合法id
 if (!is_valid_openid($result["openid"], $result["timestamp"], $result["oauth_signature"])) {
     showerr('出错了,超时了!');
     //demo对错误简单处理
     //echo "@@@invalid openid";
     //echo "sig:".$result["oauth_signature"]."\n";
     //exit;
 }
 //echo 'good!!';
 //将access token,openid保存!!
 //XXX 作为demo,临时存放在session中,网站应该用自己安全的存储系统来存储这些信息
 //$_SESSION["token"]   = $result["oauth_token"];
 //$_SESSION["secret"]  = $result["oauth_token_secret"];
 //$_SESSION["openid"]  = $result["openid"];
 set_cookie('token_secret', mymd5($result["oauth_token"] . "\t" . $result["oauth_token_secret"] . "\t" . $result["openid"]), 3600);
 if ($rs = $db->get_one("SELECT * FROM {$pre}memberdata WHERE `qq_api`='{$result['openid']}'")) {
     $userDB->login($rs[username], '', 3600, true);
コード例 #3
0
ファイル: qqapi.class.php プロジェクト: pondyond/phpcmsv9
 public function get_openid()
 {
     /**
      * Tips:
      * QQ互联登录,授权成功后会回调注册的callback地址
      * 必须要用授权的request token换取access token
      * 访问QQ互联的任何资源都需要access token
      * 目前access token是长期有效的,除非用户解除与第三方绑定
      * 如果第三方发现access token失效,请引导用户重新登录QQ互联,授权,获取access token
      */
     //print_r($_REQUEST);
     //用户使用QQ登录,并授权成功后,会返回用户的openid。此时需要检查返回的openid是否是合法id
     //我们不建议开发者使用该openid,而是使用获取access token之后返回的openid。
     if (!is_valid_openid($this->appkey, $_REQUEST["openid"], $_REQUEST["timestamp"], $_REQUEST["oauth_signature"])) {
         //demo对错误简单处理
         echo "###invalid openid\n";
         echo "sig:" . $_REQUEST["oauth_signature"] . "\n";
         exit;
     }
     //tips
     //这里已经获取到了openid,可以处理第三方账户与openid的绑定逻辑。
     //但是我们建议第三方等到获取access token之后在做绑定逻辑
     //用授权的request token换取access token
     $access_str = $this->get_access_token($this->appid, $this->appkey, $_REQUEST["oauth_token"], $_SESSION["secret"], $_REQUEST["oauth_vericode"]);
     //echo "access_str:$access_str\n";
     $result = array();
     parse_str($access_str, $result);
     //print_r($result);
     //错误处理
     if (isset($result["error_code"])) {
         echo "get access token error<br>";
         echo "error msg: {$request_token}<br>";
         echo "点击<a href=\"http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91%E5%85%AC%E5%85%B1%E8%BF%94%E5%9B%9E%E7%A0%81%E8%AF%B4%E6%98%8E\" target=_blank>查看错误码</a>";
         exit;
     }
     //将access token,openid保存起来!!!
     //在demo演示中,直接保存在全局变量中.
     //为避免网站存在多个子域名或同一个主域名不同服务器造成的session无法共享问题
     //请开发者按照本SDK中comm/session.php中的注释对session.php进行必要的修改,以解决上述2个问题,
     $_SESSION["token"] = $result["oauth_token"];
     $_SESSION["secret"] = $result["oauth_token_secret"];
     $_SESSION["openid"] = $result["openid"];
     /*echo "<p>现在您已经获取到了用户的关键数据</p>";
     		echo "<p>openid:".$result['openid']."用户唯一标识</p>";
     		echo "<p>token:".$result['oauth_token']."具有访问权限的token</p>";
     		echo "<p>secret:".$result['oauth_token_secret']."密钥</p>";
     		echo "<p>以上三个参数您应该保存下来,用于访问QQ互联的其他接口,比如:</p>";
     		echo "<p>点击<a href=\"../user/get_user_info.php\"    target=\"_blank\">获取用户信息</a></p>";
     		echo "<p>接下来您需要处理自己网站的登录逻辑,祝您使用QQ登录愉快</p>";*/
     //第三方处理用户绑定逻辑
     //将openid与第三方的帐号做关联
 }
コード例 #4
0
    //构造请求url
    $url .= $normalized_str . "&" . "oauth_signature=" . rawurlencode($signature);
    return file_get_contents($url);
}
/**
 * Tips:
 * QQ互联登录,授权成功后会回调注册的callback地址
 * 必须要用授权的request token换取access token
 * 访问QQ互联的任何资源都需要access token
 * 目前access token是长期有效的,除非用户解除与第三方绑定
 * 如果第三方发现access token失效,请引导用户重新登录QQ互联,授权,获取access token
 */
//print_r($_REQUEST);
//用户使用QQ登录,并授权成功后,会返回用户的openid。此时需要检查返回的openid是否是合法id
//我们不建议开发者使用该openid,而是使用获取access token之后返回的openid。
if (!is_valid_openid($_REQUEST["openid"], $_REQUEST["timestamp"], $_REQUEST["oauth_signature"])) {
    //demo对错误简单处理
    echo "###invalid openid\n";
    echo "sig:" . $_REQUEST["oauth_signature"] . "\n";
    exit;
}
//tips
//这里已经获取到了openid,可以处理第三方账户与openid的绑定逻辑。
//但是我们建议第三方等到获取access token之后在做绑定逻辑
//用授权的request token换取access token
$access_str = get_access_token($_SESSION["appid"], $_SESSION["appkey"], $_REQUEST["oauth_token"], $_SESSION["secret"], $_REQUEST["oauth_vericode"]);
//echo "access_str:$access_str\n";
$result = array();
parse_str($access_str, $result);
//错误处理
if (isset($result["error_code"])) {
コード例 #5
0
 function checkUser()
 {
     /**
      * QQ互联登录,授权成功后会回调此地址
      * 必须要用授权的request token换取access token
      * 访问QQ互联的任何资源都需要access token
      * 目前access token是长期有效的,除非用户解除与第三方绑定
      * 如果第三方发现access token失效,请引导用户重新登录QQ互联,授权,获取access token
      */
     //授权成功后,会返回用户的openid
     //检查返回的openid是否是合法id
     if (!is_valid_openid($_REQUEST["openid"], $_REQUEST["timestamp"], $_REQUEST["oauth_signature"], $this->skey)) {
         return false;
     }
     //tips
     //这里已经获取到了openid,可以处理第三方账户与openid的绑定逻辑
     //但是我们建议第三方等到获取accesstoken之后在做绑定逻辑
     //用授权的request token换取access token
     $access_str = get_access_token($this->akey, $this->skey, $_REQUEST["oauth_token"], $_REQUEST['oauth_token_secret'], $_REQUEST["oauth_vericode"]);
     //echo "access_str:$access_str\n";
     $result = array();
     parse_str($access_str, $result);
     //error
     if (isset($result["error_code"])) {
         return false;
     }
     //获取access token成功后也会返回用户的openid
     //我们强烈建议第三方使用此openid
     //检查返回的openid是否是合法id