php 第三方新浪登录,PHP应用开发接入第三方登录——微博登录

favicon.ico摘要:现如今,互联网平台越来越多,大部分的平台需要账号登录后才能获得更多的权限。这么多的平台,如果每去一个平台都注册一个账号,那是非常麻烦的事情,如果能够用一个账号实现在多个平台之间的登录那将是一件非常爽的事。

现如今,互联网平台越来越多,大部分的平台需要账号登录后才能获得更多的权限。这么多的平台,如果每去一个平台都注册一个账号,那是非常麻烦的事情,如果能够用一个账号实现在多个平台之间的登录那将是一件非常爽的事。

今天就来分享下,如何在我们PHP开发的应用中接入第三方平台的登录,实现一个账号多平台使用。

这里要分享的是,在应用中接入微博登录,即,在登录我们开发的应用时无需在注册,通过微博账号登录就可以了。

1、首先得登录新浪微博,然后进入微博开放平台,然后编辑开发者信息:

微博开放平台:https://open.weibo.com

20191008_1570525912412096.jpg

2、信息填写完毕后,在此进入微博开放平台首页,分局自己的项目类型选择应接入,然后填写好需要填写的资料,信息填写完提交后,在应用基本信息中可以看到App Key,App Secret,这两个数据是我们在开发中获取access_token需要的,也只有在接入项目后才能获取到。

20191008_1570526244889451.jpg

3、接下来进入左侧:应用信息——高级信息,填写回调页面url,以及你的应用的服务器IP

20191008_1570526388867028.jpg

回调页面url必须是你进入的应用下的url,比如你的应用域名是 www.abc.com,那么你的回调页面也必须是 abc.com下的url ,可以是二级域名。

4、下载sdk,在文档、资源、sdk目录中找到你对应项目的sdk,这里是用php开发的项目,所以我们要找的是 PHP SDK

20191008_1570526649708024.jpg

5、将SDK放入项目中,在我们下载的SDK中其实只有一个核心文件,可以说只有一个文件是有用的

20191008_1570526784531153.jpg

这里我用的是thinkPHP5.0.24,而在这个核心文件中saetv2.ex.class.php中有两个类,为了方便使用,我把它拆成两个文件,一个类一个文件,然后放到项目中的extend文件夹中。

6、下面代码正式开始:<?php

namespace app\weixin\controller;

use think\Controller;

use think\Session;

use think\Request;

class Index extends Controller

{

const WB_AKEY = ''; //微博中接入应用的App Key值

const WB_SKEY = ''; //微博中接入应用的App Secret值

const WB_CALLBACK_URL = '';

//项目的登录入口

public function weibo()

{

//如果还没有授权,则给出登录授权入口

if (!Session::get('weibo_token') || time()>Session::get('weibo_token_expires')) {

echo "使用微博登录";

}else{

echo "授权成功.退出登录
";

}

}

//在登录入口调根据App Key 和 App Secret 调出微博的登录界面

//然后通过我们给出的回调页url 获取到 code,通过get方式传给 callback 回调页

public function login()

{

$o = new \SaeTOAuthV2( self::WB_AKEY , self::WB_SKEY );

$code_url = $o->getAuthorizeURL( self::WB_CALLBACK_URL );

header("location: ".$code_url);

}

//接入应用中填写的回调页

//在回调页拿到登录授权后传过来的 code ,再比对回调页url 生access_token

public function callback()

{

$o = new \SaeTOAuthV2( self::WB_AKEY , self::WB_SKEY );

if (input('get.code')) {

$keys = [];

$keys['code'] = input('request.code');

$keys['redirect_uri'] = self::WB_CALLBACK_URL;

try {

$token = $o->getAccessToken( $keys ) ;

} catch (OAuthException $e) {

}

}

if (!empty($token)) {

//在后续的应用开发中,需要用到微博开发平台提供的其他api接口时,需要用access_token

//因此这里把access_token存储起来

Session::set('weibo_token',$token['access_token']);

Session::set('weibo_token_expires',time()+$token['expires_in']);

//access_token 生成并存储后转道获取授权后我们希望展示的页面

$this->redirect("weibo");

}

}

public function loginout()

{

Session::set('weibo_token', '');

Session::set('weibo_token_expires', time()-1);

echo "退出成功";

}

}

实际效果:

20191008_1570527651391626.gif

除了微博授权登录,QQ授权登录也是在应用中用的非常多的,QQ授权登录的实现方法和微博的授权登录几乎是一样的,完全可以参照微博的授权登录来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
THINKPHP最全第三方登录(包括腾讯QQ、微信、新浪微博、Github、淘宝网、百度、搜狐微博、人人、360、网易等等) 使用方式: 1、使用命名空间 use Org\ThinkSDK\ThinkOauth; 2、设置三方登录的类别并赋予一个变量 $type = ThinkOauth::getInstance('qq'); 3、设置配置文件 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ), 上文中的(TYPE)为设置的类别,其值目前有以下几个: //腾讯QQ登录配置 THINK_SDK_QQ // 用户基本信息API接口 user/get_user_info //腾讯微博配置 THINK_SDK_TENCENT // 用户基本信息API接口 user/info //新浪微博配 THINK_SDK_SINA // 用户基本信息API接口 users/show。附加参数:'uid='.$obj->openid() //网易微博配置 THINK_SDK_T163 // 用户基本信息API接口 users/show //人人网配置 THINK_SDK_RENREN // 用户基本信息API接口 users.getInfo //360配置 THINK_SDK_X360 // 用户基本信息API接口 user/me //豆瓣配置 THINK_SDK_DOUBAN // 用户基本信息API接口 user/~me //Github配置 THINK_SDK_GITHUB // 用户基本信息API接口 user //Google配置 THINK_SDK_GOOGLE // 用户基本信息API接口 userinfo //MSN配置 THINK_SDK_MSN // 用户基本信息API接口 msn。附加参数:token //点点配置 THINK_SDK_DIANDIAN // 用户基本信息API接口 user/info //淘宝网配置 THINK_SDK_TAOBAO // 用户基本信息API接口 taobao.user.buyer.get。附加参数:'fields=user_id,nick,sex,buyer_credit,avatar,has_shop,vip_info' //百度配置 THINK_SDK_BAIDU // 用户基本信息API接口 passport/users/getLoggedInUser // 注意,百度的头像位置是http://tb.himg.baidu.com/sys/portrait/item/{$data['portrait']} //开心网配置 THINK_SDK_KAIXIN // 用户基本信息API接口 users/me //搜狐微博配置 THINK_SDK_SOHU // 用户基本信息API接口 i/prv/1/user/get-basic-info 4、实例化一个登录页面 redirect($type->getRequestCodeURL()); 这里的$type是第二部获取的结果 5、回调页面 $code = $this->get('code'); $type = 'QQ'; $sns = ThinkOauth::getInstance($type); //腾讯微博需传递的额外参数 $extend = null; if($type == 'tencent'){ $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey')); } //请妥善保管这里获取到的Tok
接入第三方登录是让用户方便快捷地使用已有账号登录你的网站或应用程序,提高用户体验的一种方式。本文将介绍如何使用 PHP 实现微信公众号第三方登录。 1. 获取微信授权 首先,需要获取微信用户的授权。具体步骤如下: 1)引导用户打开微信授权页面: ```php $appid = 'your_appid'; $redirect_uri = urlencode('http://yourdomain.com/callback.php'); $scope = 'snsapi_userinfo'; $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=$scope&state=STATE#wechat_redirect"; header("Location: $url"); ``` 其中,`$appid` 是你的微信公众号的 AppID,`$redirect_uri` 是授权后回调的 URL,`$scope` 是授权作用域,可以是 `snsapi_base` 或 `snsapi_userinfo`,`$state` 是自定义参数,用于防止 CSRF 攻击。 2)获取授权码: 用户同意授权后,会重定向到 `$redirect_uri` 指定的 URL,带上授权码 `code` 和 `state` 参数。 ```php $code = $_GET['code']; $state = $_GET['state']; ``` 3)获取 access_token 和 openid: 使用授权码 `code` 获取 `access_token` 和 `openid`。 ```php $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $response = file_get_contents($access_token_url); $result = json_decode($response, true); $access_token = $result['access_token']; $openid = $result['openid']; ``` 其中,`$secret` 是你的微信公众号的 AppSecret。 2. 获取用户信息 获取到 `access_token` 和 `openid` 后,可以使用以下代码获取用户信息: ```php $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN"; $response = file_get_contents($userinfo_url); $userinfo = json_decode($response, true); ``` 其中,`$userinfo` 包含用户的昵称、头像等信息。 3. 将用户信息保存到数据库 最后,将获取到的用户信息保存到数据库中,以便下次使用时快速登录。 ```php // 连接数据库 $con = mysqli_connect('localhost', 'username', 'password', 'database'); mysqli_set_charset($con, "utf8"); // 查询用户是否已存在 $sql = "SELECT * FROM users WHERE openid='$openid'"; $result = mysqli_query($con, $sql); if (mysqli_num_rows($result) == 0) { // 用户不存在,插入新用户信息 $nickname = mysqli_real_escape_string($con, $userinfo['nickname']); $headimgurl = mysqli_real_escape_string($con, $userinfo['headimgurl']); $sql = "INSERT INTO users (openid, nickname, headimgurl) VALUES ('$openid', '$nickname', '$headimgurl')"; mysqli_query($con, $sql); } // 保存用户登录状态 $_SESSION['openid'] = $openid; ``` 以上就是使用 PHP 实现微信公众号第三方登录的步骤。需要注意的是,为了确保安全性,应该对用户输入的数据进行过滤和验证,防止 SQL 注入和 XSS 攻击等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值