众所周知(至少对于用百度作为第三方平台的人是的),百度账号登陆是真的很容易申请到一个id,但是,他有一个问题,就是:
很容易出错
我做这个东西的时候,至少弄出了不下十个错误。现在,我就告诉大家这些问题如何解决
1、百度开发者管理中心怎么进
回答:不要指望在百度上能直接找到连接,你只能点击下方链接进入,也不要指望在百度开发者中心主页进入,更不要指望着自己乱猜网址。
连接:http://developer.baidu.com/console#app/project点击此处跳转
(你要是乱打网址进去了,那么:欧皇,请受我一拜!)
2、怎么创建应用
点击创建工程(若按钮被百度隐藏,请点击此处或复制下方链接http://developer.baidu.com/console#app/create)
按提示填写相关信息
至此,创建工程就可以了
3、怎么登陆
这个问题可算是折腾我半天了。
1、初始设置
点击你要进入的工程
按图示填写信息,然后点击保存
====================
至此,你已经搞定了后台工作
====================
废话不多说,php代码直接上
1、注册(我是在注册时强制绑定百度账号的,但是如果你只是想作为一种第三方登陆工具,也可以参考,你可以只看获取code和access_token的部分
<?php
//常量设置
header("charset=utf-8");
//连接数据库
$con = mysql_connect("localhost","这里填账号",这里填密码);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("sfydb_6273437", $con);
//这说明是传回了code
if($_GET['code']!="")
{
//判断是否已注册
$result = mysql_query("SELECT * FROM userlist where Userid = '".$_GET['Userid']."'");
$count=mysql_num_rows($result);
if($count!=0)
{
die("这个账号已经被注册过了");
}
//获取token
$url="https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=".$_GET['code']."&client_id=BIPCjdmpveslLNrKovbStQ3t&client_secret=我当然不会告诉你secret是多少&redirect_uri=http://sscczzjj.top?Userid=".$_GET['Userid']."%26Password=".str_replace("=","%253D",$_GET['Password']);
$html = file_get_contents($url);
$TokenText = json_decode($html, true);
//获取失败
if($TokenText["error"]!="")
{
die($TokenText["error_description"]);
}
//读取资料
$url="https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser?access_token=".$TokenText['access_token'];
$html = file_get_contents($url);
$InfoText = json_decode($html, true);
//判断此id是否已注册
$result = mysql_query("SELECT * FROM userlist where Baiduuid = '".$InfoText['openid']."'");
$count=mysql_num_rows($result);
if($count!=0)
{
die("此百度id已注册过一个账号");
}
//获取失败
if($InfoText["error_msg"]!="")
{
die($InfoText["error_msg"]);
}
//写数据库
mysql_query("INSERT INTO userlist (Userid, Password, AccessToken, UserName, Baiduuid, Cookie, RefershToken) VALUES ('".$Userid."', '".$Password."', '".$TokenText['access_token']."', '".$InfoText['uname']."', '".$InfoText['openid']."', '".$Cookie."', '".$TokenText['refresh_token']."')");
//返回成功
die("注册成功,请选择登陆操作进行登陆");
}
//表明是由客户端发起注册请求
if($_GET['firstinto']!="")
{
//判断是否已注册
$result = mysql_query("SELECT * FROM userlist where Userid = '".$_GET['Userid']."'");
$count=mysql_num_rows($result);
if($count!=0)
{
die("这个账号已经被注册过了");
}
//获取code
$url="https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&confirm_login=1&client_id=BIPCjdmpveslLNrKovbStQ3t&redirect_uri=http://sscczzjj.top?Userid=".$_GET['Userid']."%26Password=".str_replace("=","%253D",$_GET['Password']);
Header("Location:$url");
}
//加密
function encryptForDotNet($input, $key)
{
$iv = $key;
$addnum = 8 - ( strlen($input) % 8 );
for ($i = 0; $i < $addnum; $i++)
{
$input .= chr($addnum);
}
$output = mcrypt_encrypt(MCRYPT_DES, $key, $input, MCRYPT_MODE_CBC, $iv);
return base64_encode($output);
}
//解密
function decryptForDotNet($input, $key)
{
$iv = $key;
$output = base64_decode($input);
$output = mcrypt_decrypt(MCRYPT_DES, $key, $output, MCRYPT_MODE_CBC, $iv);
for ($i = 0; $i <= 8; $i++)
{
$output = str_replace(chr($i), "", $output);
}
return $output;
}
?>
2、登陆
<?php
//常量设置
$con = mysql_connect("localhost","这里填写账号",这里填写密码);