欢迎来到php自学网~
阅读模式:

给网站添加一键新浪微博登录的功能

查看:2239  回复:0  类型:  来源:新浪微博开放平台  标签 新浪微博开放平台

详细流程可以去新浪微博开放平台官网查看

http://open.weibo.com/


大概流程:

去新浪微博开放平台官网验证网站并提交网站资料,审核通过后创建网站应用,网站应用审核通过后会有app key, 然后所有新浪微博账号的数据都是通过这个去获取。

新浪微博开放平台中一键有写好的demo,下载地址:http://open.weibo.com/wiki/SDK#PHP_SDK

都是封装好的函数,直接调用就可以实现各种功能了。


一键登录代码:

//一键登录图片按钮,给oa链接传送参数appkey 和 网站回调地址
<img style="cursor: pointer;margin-top:7px;" src="sina/weibo_login.png" alt="微博登录" title="微博登录"
onclick="javascript:window.open('https://api.weibo.com/oauth2/authorize?client_id=12345&amp;
redirect_uri=http%3A%2F%2Fzixuephp.net%2Fapi%2Fsina%2Fcallback.php&amp;response_type=code','_self')"
width="150">

 
//回调地址代码
<?php

include_once( 'config.php' );//新浪微博demo配置文件
include_once( 'saetv2.ex.class.php' );//新浪微博demo类文件


$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );//实例化

//通过code获取token
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) {}
}
//通过token获取uid
if ($token) {
    $_SESSION['token'] = $token;
    setcookie('weibojs_' . $o->client_id, http_build_query($token));
    $c = new saetclientv2(WB_AKEY,WB_SKEY,$token['access_token']);
    $usr_info=$c->show_user_by_id($token['uid']); //微博sdk方法获取用户的信息 ,通过uid获取用户信息

    $uid = $usr_info['id'];
    $name = $usr_info['name'];
    $head = $usr_info['profile_image_url'];
    
    //通过微博uid查询之前有没有登录过
    if($u=$dbh->query("select * from user where other_id='{$uid}'")->fetch()){
        session_start();
        $_SESSION['account']=$u['account'];
        $_SESSION['account_id']=$id;
        header('Location:../../iphp.php');
        exit;
    }

?>
//未登录过的时候进行数据保存
    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE-Edge"/>
        <title>微博登录一键登录</title>
        <meta name="author" content="www.zixuephp.net"/>
        <meta name="copyrihgt" content="www.zixuephp.net"/>
        <meta name="keywords" content="php自学网"/>
        <meta name="description" content="php自学网www.zixuephp.net"/>
        <link rel="shortcut icon" href="../../favicon.jpg" type="image/x-icon"/>
        <link rel="stylesheet" href="../../static/css/style.css"/>
        <script type="text/javascript" src="../../static/js/jquery-1.8.3.min.js"></script>
    </head>
    <body>

    <div id="login">
        <div>
            <form method="post">
                <p style="margin-top:15px;margin-bottom:15px;font-size:16px;">
                ----------新浪微博一键登陆授权成功,信息设置----------</p>
                <p style="margin-left:20px;margin-bottom:10px;"><span></span></p>
                <p>邮箱设置<input type="email" name="account" placeholder="邮箱账号"/><span></span></p>
                <p>密码设置<input type="password" name="passwd" placeholder="密码"/><span></span></p>
                <input type="hidden" name="ou_id" value="<?php echo $uid; ?>" />
                <input type="hidden" name="sname" value="<?php echo $name; ?>" />
                <input type="hidden" name="head" value="<?php echo $head; ?>" />
                <div id="set" style="margin-left:60px;">确定</div>
            </form>
        </div>
    </div>

    <script type="text/javascript">
        $('#set').click(function(){
            var email = $('input[name=account]').val();
            var pw = $('input[name=passwd]').val();
            var ou_id = $('input[name=ou_id]').val();
            var sname = $('input[name=sname]').val();
            var head = $('input[name=head]').val();
            $.ajax({
                type:'post',
                url:'callback.php',//发送post请求的用户数据到本页面进行保存到数据库
                data:{
                    'email':email,
                    'pw':pw,
                    'ou_id':ou_id,
                    'sname':sname,
                    'head':head
                },
                success:function(data){
                    if(data=='登陆成功!'){
                        $('.logintips span').text('登陆成功!3s后自动关闭窗口...');
                        setTimeout(function(){
                            window.close();
                        },3000);
                    }
                },error:function(){
                    $('.logintips span').text('请求出错!');
                }

            });
        });
    </script>

    </body>
    </html>
<?php

//处理来自ajax的数据
if( $_SERVER['REQUEST_METHOD'] == "POST" ){
    
    $mail = trim($_POST['email']);
    $password = md5($_POST['pw']);
    $wb_id = $_POST['ou_id'];
    $subname = trim($_POST['sname']);
    $head = trim($_POST['head']);
    $wb_id = 'wb_'.$wb_id;

    if ( empty($mail)  || empty($password) ) {
        echo "信息填写不完整。";
        exit;
    }else{


        if($dbh->query("select * from user where account='{$mail}'")->fetch()){
            echo '邮箱已被注册!';
            exit;
        }

        if($dbh->exec("insert into user (account,password,other_id) 
        values('$mail','$password','$wb_id'")>0){
            echo '登陆成功!';
            $userid=$dbh->lastInsertId();
            session_start();
            $_SESSION['account']=$mail;
            $_SESSION['account_id']=$userid;
            exit;
        }else{
            echo '信息设置失败!';
            exit;
        }
    }
}


}else{
    echo '<script>alert("授权失败!");window.close();</script>';
    exit;
}

?>

新浪微博一键登录的好处减少用户注册成本,大大降低了用户注册、登录的门槛,借助庞大的微博用户群,给第三方网站带来更多新用户。同时也使网站内容通过好友关系得到进一步的传播,从而提升网站的访问量和用户数。

分享到:
0 0

*有问题之处烦请在评论中指出非常感谢!
不是我想要的内容,继续搜索:

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
centos 7 安装 samba 服务   阅读:1410Mysql在大型网站的应用架构演变   阅读:1424linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:1773centos7开启交换内存   阅读:2014浅谈javascript的函数节流   阅读:1179php 统计网页打开耗时和脚本运行内存   阅读:1908PHP 鸟哥:我也曾经是“不适合”编程的人   阅读:2314简单的DOS攻击之死亡之ping详解   阅读:10129用php从1乘到100的值   阅读:1715php 读取和设置redis的键值   阅读:2401浅谈javascript的函数节流   阅读:1179小米手机端商城rem适配原理   阅读:2588javascript对cookie操作详细代码函数   阅读:1363十张GIF让你弄懂递归等概念   阅读:1485用php从1加到100的值   阅读:2717mysql共享锁和排他锁详解   阅读:1577centos 7 修改系统屏幕分辨率   阅读:13183phpexcel 超简单从数据库一键导出数据到excel教程   阅读:1967mysql5.7开启sql日志的配置   阅读:1563shell脚本批量删除几天前的文件   阅读:1727简单的DOS攻击之死亡之ping详解   阅读:10129栈和堆的区别   阅读:1183php 生成图片,给图片加水印   阅读:2074给网站添加一键qq登录的功能   阅读:2032最新centos7 搭建LNMP环境(centos7.2+php7+mysql5.7+nginx1.11+redis3.2)   阅读:3281栈和堆的区别   阅读:1183知乎百万赞作者告诉你:年薪百万的人都在靠什么赚钱   阅读:1079shell脚本破解十位数内的所有纯数字rar加密压缩包脚本   阅读:1448crontab+shell脚本实现定时备份mysql数据库   阅读:1498Nginx 配置文件详解   阅读:1367给网站添加一键新浪微博登录的功能   阅读:2243移动端js触摸touch详解(附带案例源码)   阅读:3702网站性能优化-页面静态缓存   阅读:1604centos 7 安装 mysql-5.7   阅读:1755linux php7安装yaf扩展   阅读:1074mysql中文分词全文搜索索引讯搜的安装   阅读:1391php文件下载防盗链   阅读:2874centos7开启交换内存   阅读:2014小米手机端商城rem适配原理   阅读:2588浅谈javascript的函数节流   阅读:1179给网站添加一键qq登录的功能   阅读:2032centos 7 安装 php-7.1.3   阅读:7124给 centos 7 安装桌面环境   阅读:7414一步步带你,如何网站架构   阅读:1183session与cookie的区别   阅读:1345shell脚本统计当前服务器并发连接数   阅读:1536php删除一个文件夹内的所有文件夹和文件   阅读:1501php文件下载防盗链   阅读:2874php打印九九加法表   阅读:1310简单的DOS攻击之死亡之ping详解   阅读:10129