PHP教程

PHP 第三方登录 (QQ登录)

本文主要是介绍PHP 第三方登录 (QQ登录),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、介绍

为什么要有第三方登录:关于第三方登录,你应该知道的

现在很多网站都集成了第三方帐号登录的功能,比如QQ登录、微信登录、微博登录。

使用第三方帐号登录目的,简化用户注册的流程,实现快速的注册登录。

第三方登录基本流程:①跳转到第三方认证页面 ②回调地址中的处理

1563628351259

2、签约

QQ登录接口,使用也需要申请。

腾讯开放平台:腾讯开放平台beta|开放成就梦想

腾讯开放平台注册:腾讯开放平台 OPEN.QQ.COM

QQ互联平台网站:QQ互联官网首页

image

点击应用管理,会要求登录

登录之后,点击应用管理,第一次登录此平台会要求注册成为开发者

分为公司接入和个人接入。

公司接入需要营业执照信息。这里我们平时使用可以选择个人接入

image

image

image

注册成功之后等待审核,通过之后进入应用管理

.

审核通过之后可以创建应用了。

选择创建网站应用

进入资料填写页面,填写完成提交

提交成功之后,需要继续完善相关信息

 

创建成功,进入应用管理页面,可以看到刚创建的应用处于审核中状态

审核成功和审核失败状态下,操作栏都有一个查看按钮,可以点击查看应用详情

参考:

APP ID :101542020

APP Key :539cd4f7784f107fa74ad58d87b5c916

回调地址:(你自己的已经备案过的域名)People.com | Celebrity News, Exclusives, Photos and Videosicon-default.png?t=LA92http://www.tpshop.com/index.php/home/login/qqcallback

说明:不管审核成功还是审核失败,qq登录的接口都可以使用,区别是,审核成功后所有人的qq都可以登录,审核失败只有申请人的qq可以正常登录。

为了测试qq登录,重新配置一个域名 www.tpshop.com 指向 pyg/public目录

站点域名管理

image

域名解析

127.0.0.1       www.tpshop.com

3、SDK的下载和配置

在QQ互联平台网站,点击 “文档资料”

进入SDK下载页面:

image

在页面找到网站接入 sdk php版本

image

SDK配置:

① 将解压后的目录,移动到public/plugins/目录下,改名为qq

image

② 在浏览器直接访问:域名/plugins/qq/index.php

image

③ 点击“设置配置项”,进入配置页面

按照要求填写相关的信息,点击“配置”

image

③ 点击“查看example”,打开测试页面。

点击“用QQ帐号登录”,可以打开qq登录的小窗口。

image

image

④ 按照回调域,在Home模块Login控制器新增qqcallback方法

YurunOAuthLogin: PHP 第三方登录授权 SDK,集成了QQ、微信、微博、Github等常用接口。QQ群:17916227。本仓库仅用于存档,不再发布更新日志,请移步 Github:icon-default.png?t=LA92https://gitee.com/yurunsoft/YurunOAuthLogin?_from=gitee_search

安装

在您的composer.json中加入配置:

PHP >= 5.5.0

{
    "require": {
        "yurunsoft/yurun-oauth-login": "~3.0"
    }
}

 

PHP < 5.5.0

{
    "require": {
        "yurunsoft/yurun-oauth-login": "~2.0"
    }
}

完成后要更新  composer update

3.x 版本支持 PHP >= 5.5,持续迭代维护中

2.x 版本支持 PHP >= 5.4,支持长期 BUG 维护,保证稳定可用,停止功能性更新

 

在 config配置文件中建一个auth

return[
    'qq'=>[
        'appid'=>101542020,
        'appkey'=>'539cd4f7784f107fa74ad58d87b5c916',
        'callbackUrl'=>'http://www.tpshop.com/index.php/home/login/qqcallback'
    ],
];

 

控制器

<?php
declare (strict_types=1);

namespace app\home\controller;


use app\home\model\User;
use think\App;
use think\Log;
use think\Request;


class Login

{
//    表中要用的数据 打开类型
//用常量定义方便取值
    const OPEN_TYPE_QQ = 'qq';
    /**
     * qq登录平台
     *
     * @param \think\Request /e $request
     * @return \think\Response
     */
    public function qqLogin(Request $request)
    {
        $qqOAuth = new \Yurun\OAuthLogin\QQ\OAuth2(config('auth.qq.appid'), config('auth.qq.appkey'), config('auth.qq.callbackUrl'));
        $url = $qqOAuth->getAuthUrl();
        header('location:' . $url);

    }

    /**
     * qq回调
     *
     * @param \think\Request $request
     * @return \think\Response
     */
    public function qqcallback(Request $request)
    {
// 获取accessToken
        $qqOAuth = new \Yurun\OAuthLogin\QQ\OAuth2(config('auth.qq.appid'), config('auth.qq.appkey'), config('auth.qq.callbackUrl'));

        $accessToken = $qqOAuth->getAccessToken($request->get('state'));

// 用户资料
        $userInfo = $qqOAuth->getUserInfo();
// 用户唯一标识
        $openid = $qqOAuth->openid;
      $userData= User::where('open_type', self::OPEN_TYPE_QQ)->where('openid', $openid)->find();
      if($userData){
          $userData->update_time=time();
          $userData->nickname=$userInfo['nickname'];
          $userData->save();
      }else{
          $addUser=[
              'nickname'=>$userInfo['nickname'],
              'figure_url'=>$userInfo['figureurl'],
              'open_type'=>self::OPEN_TYPE_QQ,
              'openid'=>$openid,
          ];

         $user= User::create($addUser);
      }

        $userData= User::where('open_type', self::OPEN_TYPE_QQ)->where('openid', $openid)->find();
        return redirect('http://www.tpshop.com/home/index/create');
    }

 待完善

这篇关于PHP 第三方登录 (QQ登录)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!