1.先去微博开放平台申请网站接入 (http://open.weibo.com/connect)
1.申请应用后,会提供App Key与App Secret在审核通过前可以用这个做测试;
2.在应用信息->高级信息 里填写登录后的返回地址
2.下载SDK (http://open.weibo.com/wiki/SDK#PHP_SDK)
1.在Config里填写上得到的数据
class Config
{
public $akey = '344xxxxxxx';
public $WB_SKEY = 'd6677ae0d90780ed064349086xxxxxxx';
public $WB_CALLBACK_URL = 'http://www.baidu.com';
}
2.我是把这几个配置文件放置在了Model里,例如:SaeTClientV2.php, SaeTOAuthV2.php,Config.php这几个配置文件
{以下是我的方法,看明白了再用哈}
/***
* 第三方授权,获取到code
* @param Request $request
*/
public function callback(Request $request)
{
$zhi = new Config();
$AppKey = $zhi->akey;
$Appserver = $zhi->WB_SKEY;
$WB_CALLBACK_URL = $zhi->WB_CALLBACK_URL;
$o = new SaeTOAuthV2( $AppKey , $Appserver );
if (isset($_REQUEST['code'])) {
$keys = array();
$keys['code'] = $_REQUEST['code'];
$keys['redirect_uri'] = $WB_CALLBACK_URL;
try {
$token = $o->getAccessToken( 'code', $keys ) ;
} catch (OAuthException $e) {
}
}
if ($token) {
session("token",$token);
setcookie('weibojs_' . $o->client_id, http_build_query($token));
return $this->redirect("index/disanfangdengl");
}else{
echo "授权失败,请重试";
}
}
/***
* 获取当前用户信息,将数据写入数据库完成第三方登录
* @param Request $request
*/
public function disanfangdengl(Request $request)
{
$zhi = new Config();
$AppKey = $zhi->akey;
$Appserver = $zhi->WB_SKEY;
$WB_CALLBACK_URL = $zhi->WB_CALLBACK_URL;
$c = new SaeTClientV2( $AppKey , $Appserver , session("token")['access_token'] );
$ms = $c->home_timeline(); // done
$uid_get = $c->get_uid();
if(isset($uid_get["uid"])){
$uid = $uid_get['uid'];
$user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
$userinfo = Db::name("user")
->where("weibo",$user_message["id"])
->find();
if($userinfo){
$data_name = $user_message["name"];
$data_head_portrait = $user_message["profile_image_url"];
if(Db::name("user")->where("weibo",$user_message["id"])->update(["name"=>$data_name,"head_portrait"=>$data_head_portrait])){
cookie('user',$userinfo);
return redirect("index/index");
}else{
cookie('user',$userinfo);
return redirect("index/index");
}
}else{
$data["name"] = $user_message["name"];
$data["weibo"] = $user_message["id"];
$data["create_time"] = time();
$data["head_portrait"] = $user_message["profile_image_url"];
$userid = Db::name("user")->insertGetId($data);
if($userid){
$user = Db::name("user")->where("id",$userid)->find();
cookie('user',$user);
return redirect("index/index");
}else{
echo "登录失败,请稍后再试";
}
}
}else{
echo "发生未知错误,请稍后再试";
}
}
嗯,以上是我自己摸索的可能写麻烦了,请大佬指点
253372540@qq.com