简单说一下OAuth协议:
OAUTH是一种开放的协议,为桌面、手机或web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。
OAuth协议简单说明.png

下面我们去微博开发者平台登入微博。点击进入微博开发者平台
如图填写信息:

1.png

2.png

网站接入->创建新应用

3.png

4.png

填写信息后可以拿到微博给我们分配的App Key、App Secret

5.png

填写回调地址

6.png

下载php 版本的sdk包并解压

7.png

8.png

我这里把核心类文件saetv2.ex.class.php和weibo_login.png单独拿出来。
index.php



 <?php
        require_once 'config.php';
        require_once 'saetv2.ex.class.php';
        $redis = new \Redis();
        $redis->connect('127.0.0.1');
        $cache_key = 'weibo_accessToken';
        $isLogin = $redis->get($cache_key) ? true : false;
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>微博登入测试</title>
    </head>
    <body>
    
    <?php if ($isLogin):?>
     登入成功
        <a href="loginout.php">退出</a>
    <hr>
<!--发表微博-->
     <?php
        //$o = new SaeTClientV2(WB_KEY, WB_SEC, $redis->get($cache_key));
        //debug($o->update('我的测试微博'));
        ?>
    <?php else:?>
        <a href="wblogin.php"><img src="weibo_login.png"></a>
    <?php endif;?>
    </body>
    </html>

config.php

<?php
/**
 * Created by ZhengNiu.
 * User: admin
 * Date: 2019/8/28
 * Time: 9:37
 */
define("WB_KEY", 'xxxxxxxx');//App Key
define("WB_SEC", 'xxxxxxxxx');//App Secret
define("CALLBACK","https://xxx.com/callback.php");//回调地址,需要和上面在微博平台配置的保持一致。
//调试工具暂时放这里
function debug($val, $dump = false, $exit = true)
{
    if ($dump) {
        $func = 'var_dump';
    } else {
        $func = (is_array($val) || is_object($val)) ? 'print_r' : 'printf';
    }
    header('Content-type:text-html;charset=utf-8');
    echo '<pre>debug output:<hr />';
    $func($val);
    echo "</pre>";
    if ($exit) exit;
}

callback.php

<?php
/**
 * Created by ZhengNiu.
 * User: admin
 * Date: 2019/8/28
 * Time: 10:20
 */

require_once 'config.php';
require_once 'saetv2.ex.class.php';
$redis = new \Redis();
$redis->connect('127.0.0.1');
$cache_key = 'weibo_accessToken';
$access_token = $redis->get($cache_key);
if (!$access_token) {
    $keys['code'] = $_GET['code'];
    $keys['redirect_uri'] = CALLBACK;
    $o = new SaeTOAuthV2(WB_KEY, WB_SEC);
    $res = $o->getAccessToken($keys);
    $redis->setex($cache_key,$res['expires_in'], $res['access_token']);
    $access_token = $res['access_token'];
}
header('Location:index.php');

loginout.php

<?php
/**
 * Created by ZhengNiu.
 * User: admin
 * Date: 2019/8/28
 * Time: 11:10
 */
$redis = new \Redis();
$redis->connect('127.0.0.1');
$cache_key = 'weibo_accessToken';
$redis->delete($cache_key);
header('Location:index.php');

wblogin.php

<?php
/**
 * Created by ZhengNiu.
 * User: admin
 * Date: 2019/8/28
 * Time: 10:10
 */
require_once 'config.php';
require_once 'saetv2.ex.class.php';

$o = new SaeTOAuthV2(WB_KEY, WB_SEC);
$oauth = $o->getAuthorizeURL(CALLBACK);
header('Location:'.$oauth);

上面只是粗略的写了代码演示了一下使用方法,应用中请根据自己的需求结合到框架里面。

演示:
1234.gif

Last modification:August 28th, 2019 at 02:48 pm
如果觉得我的文章对你有用,请随意赞赏