本文作者:心月

PHP应用开发接入第三方登录——微博登录

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

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

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

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


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

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

微博开放平台注册开发者

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

应用基本信息

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

填写回调页面url

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

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

sdk下载

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

SDK核心文件

这里我用的是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 "<a href='/login'>使用微博登录</a>";
    }else{
        echo "授权成功.<a href='/loginout'>退出登录</a><br>";
    }
}

//在登录入口调根据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 "退出成功";
}
}

实际效果:

微博授权接入

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


文章版权及转载声明:

作者:心月 本文地址:http://www.xinyueseo.com/other/379.html发布于 2019-10-21
文章转载或复制请以超链接形式并注明出处心月IT博客

分享到:
赞(

发表评论

快捷输入:

    评论列表 (有 0 条评论,人围观)参与讨论