美文网首页PHPPHP经验分享
web三方登录踩过的坑

web三方登录踩过的坑

作者: 王中阳 | 来源:发表于2016-12-27 22:13 被阅读56次
  1. web端基本的三方登录逻辑官方文档都写了,没必要赘述。我就聊聊一些坑:

  2. 三方的回调域名只能填写一个,那么就需要判断是pc,还是手机访问。(大多数网站的m站和pc站是2个域名)

  • 解决办法:用一个域名,然后程序里判断是手机访问还是电脑访问
  1. 工具代码
    //如果检测到访问的浏览器为下列一个指定的移动浏览器 则返回true
    function is_mobile()
    {
        $regex_match = "/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
        $regex_match .= "htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
        $regex_match .= "blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";
        $regex_match .= "symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
        $regex_match .= "jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
        $regex_match .= ")/i";
        return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
    }
  1. 使用代码
      //回调成功,重定向到个人中心
        $is_mobile = $this->is_mobile();
        if ($is_mobile) {
            $this->redirect("/");
        } else {
            $this->redirect("http://ucenter.xxxx.com/");
        }
  1. 用QQ的三方登录举个例子:

  2. pc的三方登录也是复用的下面的代码,但是不用做pc还是mobile的判断。拿到code,请求个人信息存到session中就ok了!

    public function qqAction()
    {
        $code = $this->_request->getQuery('code');
        $is_mobile = $this->is_mobile();
        if ($is_mobile) {//手机端
            Yaf_Loader::import('ApiLogin/QQ.php');
            $qq = new QQ();
            $token = $qq->getAccessToken($code);
            $bind_id = $qq->getOpenId($token);
            $dataSource = $qq->getUserInfo($token);
            $userinfo = json_decode($dataSource, true);

            $result = Service_User_InfoModel::checkIsFirst(TYPE_QQ, $bind_id);
            if (empty($result)) {
                $userInfo['real_name'] = $userinfo['nickname'];
                $userInfo['avatar'] = $this->dealAvatar($userinfo['figureurl_qq_2']);
                $userInfo['sex'] = $userinfo['gender'] == '男' ? 1 : 2;
                $userInfo['token'] = $this->getToken();

                $this->renderLogin($userInfo, TYPE_QQ, $bind_id);
            } else {
                $userbind = Service_User_InfoModel::getUserBind($result);
                $this->_loginUserId = $userbind['user_id'];
            }
            $this->saveSession($this->_loginUserId);
        } else {//pc端 这部分是核心
            $this->redirect("http://ucenter.shiqc.com/?c=login&a=qq&code=" . $code);
        }
    }

一个敲代码,写文字的人,我在这里!

来玩啊

相关文章

  • web三方登录踩过的坑

    web端基本的三方登录逻辑官方文档都写了,没必要赘述。我就聊聊一些坑: 三方的回调域名只能填写一个,那么就需要判断...

  • Line登录踩过坑

    第一次写博客,目的在于总结一下最近做第三方登录踩过的坑,陈述的观点不一定都是正确的,但是我想能为遇到类似问题的小伙...

  • Swift开发 微信第三方登录

    引言 微信支付和微信第三方登录已经做过好多次了,每次做感觉都有坑,详细记录下,以免下次踩坑,先从微信登录开始吧。 ...

  • classpath

    前言 java web项目中的 classpath 很重要,以下为踩过不少坑后的总结。 一、 classpath ...

  • Uncaught SyntaxError:

    记录web踩过的坑 情景: Angular 前台向Java springboot的后台请求一组List JAVA ...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • web网站接入GitHub第三方登录(踩坑)

    原文链接:https://www.whongbin.cn/index/article/detail/id/25.h...

  • 支付宝发起支付sdk2.0(已填坑)

    本人负责公司的支付系统,因此少不了和第三方支付的对接。踩过的坑也不计其数,为了让更少的人踩坑,故记下。 支付的第一...

  • iOS第三方登录总结(一)Facebook

    由于当前项目需要有FB 、Line 、Twitter、Apple 三方登录我一一介绍他们的集成步骤和踩的坑首先是F...

  • 关于登录设计的全面梳理

    登录、注册这样的老话题对于产品经理来讲,可谓是陈词滥调了,不过又有哪个产品经理在从业之初,没有挖过登录的坑、踩过登...

网友评论

    本文标题:web三方登录踩过的坑

    本文链接:https://www.haomeiwen.com/subject/fgbevttx.html