X
双12活动推荐^_^

年末巨惠

低至2折
查看详情 更多优惠
阅读模式:

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

查看:4485  回复: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

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

扫描二维码手机查看

发布评论:


登录:
  表情:
评论话题
推荐阅读:
面试都会问你为什么你从上一家公司离职的真实意思   阅读:7061企业让你去面试,可能不是真的招人   阅读:3835shell发送邮件脚本   阅读:2341nginx安装mysql和json模块   阅读:743比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:3174php 使用 smtp.php 类在线发送邮件功能   阅读:3637一键分享到QQ空间、QQ好友、新浪微博、微信代码   阅读:26619linux php7编译安装mongodb扩展   阅读:4553面试的时候回去等通知,等电话的真实意思   阅读:14246html5 离线缓存的使用   阅读:2750用php从1乘到100的值   阅读:4096移动端自适应rem原理   阅读:7215php 使用 smtp.php 类在线发送邮件功能   阅读:3637mysql5.7开启sql日志的配置   阅读:5209csv文件一键导入数据到mysql数据库   阅读:4160TCP的三次握手(建立连接)和四次挥手(关闭连接)   阅读:1048centos 7 修改系统屏幕分辨率   阅读:28259html5 离线缓存的使用   阅读:2750centos 7搭建zabbix3.4   阅读:3070centos 7 安装 mysql-5.7   阅读:3873centos 7.2 添加php7 的 php-fpm 开机启动   阅读:15347Nginx 配置文件详解   阅读:2966比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:3174linux rarcrack破解rar、zip和7z压缩包简单密码的工具   阅读:7996mysql共享锁和排他锁详解   阅读:4259php文件下载防盗链   阅读:6075centos 7 设置 nginx-1.11.10 开机启动   阅读:5360centos 7 安装 mysql-5.7   阅读:3873centos 7 设置 nginx-1.11.10 开机启动   阅读:5360给php7安装redis扩展库   阅读:4685mysql共享锁和排他锁详解   阅读:4259霍金24岁博士毕业论文在线预览   阅读:3219给php7安装redis扩展库   阅读:4685php文件下载防盗链   阅读:6075linux top命令详解   阅读:4848php 统计网页打开耗时和脚本运行内存   阅读:4318比phpexcel还要简单的excel CSV 一键导入数据到数据库   阅读:3174linux php7编译安装mongodb扩展   阅读:4553封装php redis缓存操作类   阅读:5090php 读取和设置redis的键值   阅读:5046浅谈javascript的函数节流   阅读:2707mysql数据库性能的基本优化   阅读:3059centos7中颁发CA证书并开启web https   阅读:1976十张GIF让你弄懂递归等概念   阅读:3672十张GIF让你弄懂递归等概念   阅读:3672linux时间戳有趣的情人节秒1234567890   阅读:3290封装php redis缓存操作类   阅读:5090linux教程,鸟哥私房菜(pdf全集)   阅读:3961javascript对cookie操作详细代码函数   阅读:3184知乎百万赞作者告诉你:年薪百万的人都在靠什么赚钱   阅读:3726