资讯专栏INFORMATION COLUMN

PHP调用微博接口实现微博登录

sf_wangchong / 792人阅读

摘要:在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站。微博登录包括身份认证用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。

在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站。这里以微博登录为例。微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。

1、首先需要引导需要授权的用户到如下地址:

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE

2、接下来要根据上面得到的code来换取Access Token:

https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

返回值:

JSON

{
 "access_token": "SlAV32hkKG",
 "remind_in": 3600,
 "expires_in": 3600 
}

3、最后,使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。


话不多说,直接上代码:


为了方便,我们先将get和post封装到application下的common.php中:
应用公共文件common.php:

function get( $url, $_header = NULL )
{
    $curl = curl_init();
    //curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false); 
    if( stripos($url, "https://") !==FALSE )
    {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    }

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    if ( $_header != NULL )
    {
        curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);
    }
    $ret    = curl_exec($curl);
    $info    = curl_getinfo($curl);
    curl_close($curl);

    if( intval( $info["http_code"] ) == 200 )
    {
        return $ret;
    }

    return false;
}
/*
 * post method
 */
function post( $url, $param )
{
     $oCurl = curl_init ();
    curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);
    if (stripos ( $url, "https://" ) !== FALSE) {
        curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );
    }
    
    curl_setopt ( $oCurl, CURLOPT_URL, $url );
    curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt ( $oCurl, CURLOPT_POST, true );
    curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param );
    $sContent = curl_exec ( $oCurl );
    $aStatus = curl_getinfo ( $oCurl );
    curl_close ( $oCurl );
    if (intval ( $aStatus ["http_code"] ) == 200) {
        return $sContent;
    } else {
        return false;
    }
}

控制器处理代码Login.php:

class Login extends 	hinkController 
{
    public function index()
    {
        $key = "****";
        $redirect_uri = "***微博应用安全域名***/?backurl=***项目本地域名***/home/login/webLogin?";
        //授权后将页面重定向到本地项目
        $redirect_uri = urlencode($redirect_uri);
        $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}";
        $this -> assign("wb_url",$wb_url);
        return view("login");
    }


    public function webLogin(){
        $key = "*****";
        //接收code值
        $code = input("get.code");
        //换取Access Token: post方式请求    替换参数: client_id, client_secret,redirect_uri, code
        $secret = "********";
        $redirect_uri = "********";
        $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}";
        $token = post($url, array());
        $token = json_decode($token, true);
        //获取用户信息 : get方法,替换参数: access_token, uid
        $url = "https://api.weibo.com/2/users/show.json?access_token={$token["access_token"]}&uid={$token["uid"]}";
        $info = get($url);
        if($info){
            echo "

登录成功

"; } } }

模板代码login.html:




    
    微博登录


点击这里进行微博登录


效果图:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30906.html

相关文章

  • 基于Yar的WordPress微博墙插件

    摘要:微博墙就是这样的一个工具,这不是一款普通的插件,这是一款搭建在基于的插件。这是一款基于的插件,底层语言开发,性能卓越。 在现在移动互联网时代,微博已经成为了每个人生活中必不可少的一个社交工具。而WordPress是全世界最为流行的博客系统,把你的博客接入新浪微博,借助微博的强大用户群,不仅能给你的网站提供巨大的流量,而且还能带来不可估量价值。 WordPress微博墙就是这样的一个工具...

    james 评论0 收藏0
  • 借助诗词API和微博图床搭建自动发图文微博机器人

    摘要:微博图床对于微博图床的理解得力于这篇文章利用微博当图床语言实现。源码如下上传图片到微博图床图片文件图片是否采用方式上传返回的数据微博提交正则表达式提取返回结果中的数据微博机器人源码列举了所要用到的几个重要,最后还是贴一下机器人的源码吧。 ​ 在2011年的时候,浙大的一位博士生借助微博的开放平台为他实验室的一台饮水机弄了个微博,名唤@浙大CCNT实验室饮水机,俗称饮水机娘。当年这...

    沈建明 评论0 收藏0
  • 关于接入微博登录的代码实现

    摘要:关于接入微博登录的代码实现今天尝试使用了微博登录的接口,也是即将使用接入微信登录,登录,手机号登录用户名登录等支持多种操作的问题微博的接口特别简单明了,文档也挺清晰的。 关于接入微博登录的代码实现 今天尝试使用了微博登录的接口,也是即将使用接入微信登录,QQ登录,手机号登录、用户名登录等支持多种操作的问题 微博的接口特别简单明了,文档也挺清晰的。 采用了OAuth2.0 的方式 请求授...

    wushuiyong 评论0 收藏0
  • Yii2集成第三方微博登录(包含账号申请、建表和常用业务逻辑全套流程)

    摘要:微博登录是最常用的第三方账号登录之一。当前状态是未提交审核,待你开发完了上线后,提交微博审核,审核通过后即可正常使用。集成微博登录首先简介一下,第三方登录开发的流程。文件是首页,其实他的唯一作用就是产生一个微博登录跳转链接。 微博登录是最常用的第三方账号登录之一。由于其网站用户量大,可操作接口功能多,所以受到很多开发者的青睐。 既然是第三方,如果想使用它们的账号进行登录,那么第一步就应...

    EdwardUp 评论0 收藏0
  • PHP基于laravel框架获取微博数据之一 模拟新浪微博登录

    摘要:模拟登录新浪微博的核心,也是与模拟登录最大的不同,密码加密。已经实现模拟新浪微博登录的功能,之后不再更新。 参考资料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....

    galois 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<