thinkphp系列之--网站接入微博登录

发布时间:1970-01-01  编辑:Mrs.默先森 

    今儿超人来絮叨絮叨,网站接入微博登录,采用第三方登录简直不能再方便,这年头,每个人手里大把账号,今儿忘记这个,明儿忘记那个的,手机登录微博,滴滴一扫登录成功;密码都不用记,使用微博登录接入也比较容易,看完你必须能搞定...

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

    PHP SDK     :  http://open.weibo.com/wiki/SDK#PHP_SDK

    闲话少说,下面我们直接开干...

    第一步:

    登录微博开放平台,选择【网站接入 WEB】,进行应用的创建

    然后按照要求进行资料填写并且提交:申请--开发--审核--上线

    这里呢,需要记下【App Key】和【App Secret】,后面开发时候用

    1498575500444254.png


    第二步:

    点击高级信息进行OAuth2.0授权设置:设置授权回调页和取消授权回调页

    设置应用服务器ip

    界面如下图1498576135686922.png

    第三步:

    这里注意,如果你审核通过的话,不用再配置了;

    审核不通过需要进行测试信息的配置;

    什么不通过的话,点击上图中【高级信息】下面的那四个大字【测试信息】;

    添加测试账号;

    应用未审核通过,不能大范围推广,可设置测试账号来测试尚在开发中的应用;

    ok,以上信息配置完成之后,接下来就开始部署代码;

    第四步,部署代码:

    将下载的PHP SDK放入你部署好的项目中,这里超人就放在了thinkphp的public目录中:文件名称为【libweibo-master】

    定义常量和载入文件,在载入SDK文件之前确保session开启并可以使用;

    在运行应用之前加载设置并加载好即可;

    代码如下:

    define( "WB_AKEY" , 'xxxxxxxxxx' );//App Key
    define( "WB_SKEY" , 'xxxxxxxxxxxxxxxxxxxxxxxxx' );//App Secret
    define( "WB_CALLBACK_URL" , 'http://xxxxxxxxxxxx/callback.php' );//回调
    require_once "./libweibo-master/saetv2.ex.class.php";//这个文件按照你自己的路径进行加载即可


    先简单来一个登陆页面;

    <!--这个模板页面是通过下面Login控制器类加载-->
    <a href="{$code_url}">微博登录</a>

    哇!!!真的是够简单;

    各位童鞋自己去搞微博的按钮吧,哎,还是给个链接吧:微博登录按钮


    那么有童鞋会问了,上面这个$code_url来自于哪里呢

    往下看就晓得了,他来自于这里:

    class Login extends Controller
    {
       /**
        * 微博登录首页
        * @return \think\Response
        */
       public function index ()
       {
          $o = new \SaeTOAuthV2( WB_AKEY , WB_SKEY );
    
          $code_url = $o->getAuthorizeURL( WB_CALLBACK_URL );
    
          return view( '' , compact( 'code_url' ) );
       }
    }


    当点击登录按钮时候,会请求$code_url;

    那么他是个啥呢,可自行打印进行查看;

    这里当点击登录按钮之后,你会看到微博的登录页面:1498579439987206.png账号密码登录或者扫码登录之后会回跳到之前我们在微博开放平台应用中设置的回调地址

    所以,我们需要在回调地址键入一下代码

    超人这里的回调是Index控制器

    class Index extends Controller
    {
    
       public function index ()
       {
          //回调处理
          if ( isset( $_REQUEST[ 'code' ] ) ) {
             $o = new \SaeTOAuthV2( WB_AKEY , WB_SKEY );
    
             $keys                   = [];
             $keys[ 'code' ]         = $_REQUEST[ 'code' ];
             $keys[ 'redirect_uri' ] = WB_CALLBACK_URL;
             try {
                $token = $o->getAccessToken( 'code' , $keys );
             } catch ( OAuthException $e ) {
             }
             if ( $token ) {
                $c            = new \SaeTClientV2( WB_AKEY , WB_SKEY , $token[ 'access_token' ] );
                $ms           = $c->home_timeline(); // done
                $uid_get      = $c->get_uid();
                $uid          = $uid_get[ 'uid' ];//用户id
                $user_message = $c->show_user_by_id( $uid );//根据ID获取用户等基本信息
                dump( $user_message );
                exit;
             } else {
                echo '授权失败';
                exit;
             }
          }
       }
    }


    至此,就可以打印出登陆者的讯息

    下面是超人打印出自己部分登录信息

    array(52) {
      ["id"] => int(3102481353)
      ["idstr"] => string(10) "3102481353"
      ["class"] => int(1)
      ["screen_name"] => string(20) "时间煮雨wo煮茶"
      ["name"] => string(20) "时间煮雨wo煮茶"
      ["province"] => string(2) "11"
      ["city"] => string(4) "1000"
      ["location"] => string(6) "北京"
      ["description"] => string(0) ""
      ["url"] => string(0) ""
      ["profile_image_url"] => string(79) "http://tva1.sinaimg.cn/crop.0.0.511.511.50/b8ec1bc9jw8ezkhm4szvjj20e80e7q31.jpg"
      ["cover_image_phone"] => string(79) "http://ww1.sinaimg.cn/crop.0.0.640.640.640/6cf8d7ebjw1ehfr4xa8psj20hs0hsgpg.jpg"
      ["profile_url"] => string(12) "u/3102481353"
      ["domain"] => string(0) ""
      ["weihao"] => string(0) ""
      ["gender"] => string(1) "m"
      ["followers_count"] => int(153)
      ["friends_count"] => int(57)
      ["pagefriends_count"] => int(0)
      ["statuses_count"] => int(37)
      ["favourites_count"] => int(8)
      ["created_at"] => string(30) "Thu Nov 08 15:15:28 +0800 2012"
      ["following"] => bool(false)
      ["allow_all_act_msg"] => bool(false)
      ["geo_enabled"] => bool(true)
      ["verified"] => bool(false)
      ["verified_type"] => int(-1)
      ["remark"] => string(0) ""
      ["insecurity"] => array(1) {
        ["sexual_content"] => bool(false)
      }

    后续处理,各位大佬根据自己的业务逻辑自行处理即可

    你可能还需要:thinkphp系列之--网站接入微博登录

    标签php Linux


本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

陶太富博客 http://blog.taotaifu.cn

最新发布

最新评论

0.068822s