关于百度oauth2.0登陆的诸多问题

本文详细介绍了使用百度OAuth2.0进行账号登录时遇到的各种问题及解决方案,包括进入百度开发者中心的路径、创建应用的步骤、登录过程的配置、回调页错误、uid获取以及授权回调地址的注意事项等,旨在帮助开发者顺利集成百度登录功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

众所周知(至少对于用百度作为第三方平台的人是的),百度账号登陆是真的很容易申请到一个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","这里填写账号",这里填写密码);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

满命满精纳西妲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值