github第三方登录接入

一、创建应用

登录github,点击设置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
好了,到这里应用就已经创建完毕了……

二、效果展示

我新建了一个站点,随便写了一个登陆页面:
在这里插入图片描述
在这里插入图片描述
效果展示:
在这里插入图片描述

三、总体流程

首先我们申请完应用后会有Client IDClient Secret
1、通过这两个参数我们去访问:https://github.com/login/oauth/authorize?client_id='你的client id',访问后会返回一个code到我们的创建应用的时候填写的那个callback回调地址。
回调地址
在这里插入图片描述
2、有了code,我们在通过Client IDClient Secretcode这三个参数去访问:https://github.com/login/oauth/access_token?code=''&client=''&client secret='',这时会返回一个access_token
在这里插入图片描述

3、有了access_token我们在去访问:https://api.github.com/user?access_token='',这时,就能以json格式返回给我们所有的用户信息了~
在这里插入图片描述

有了用户信息,就能插入到数据库了吧,总之,流程就是这样,但是调接口的方法却不尽相同

下面我把我的代码贴出来一下,可参考一下:
登录主页面:
login.php

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://www.jq22.com/jquery/jquery-3.3.1.js"></script>
</head>
<body>
<fieldset>表单	
<form>
用户名:<input type='text' name='username' id='username' /><br/><br/>
性别:<input type="text" name="pwd" id='pwd' /><br/>
    <input type="submit" name="sub" /><br/>
    其他方式登录:
    <a href="php/login.php">github</a>
</form>
</fieldset>
<script type="text/javascript">
</script>
</body>
</html>

php/login.php:

<?php

header('location:https://github.com/login/oauth/authorize?client_id=xxxxxxx&client_secret=xxxxxxxx&scope=user:email');

callback.php:

<?php
$code=$_GET['code'];
function curl($url,$postData=[],$headers=[]){
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);      //要访问的地址
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);     //执行结果是否被返回,0返,1不返
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    if($postData){
        curl_setopt($ch,CURLOPT_TIMEOUT,60);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);
    }
    if(curl_exec($ch)==false){
        $data='';
    }
    else{
        $data=curl_multi_getcontent($ch);
    }
    curl_close($ch);javascript:;
    return $data;
}
$token=curl("https://github.com/login/oauth/access_token?client_id=xxxxxxx&client_secret=xxxxxxx&code=$code");
header("location:https://api.github.com/user?$token");

ps:以上代码为我测试代码,没实际意义,仅供参考!!!

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
THINKPHP最全第三方登录(包括腾讯QQ、微信、新浪微博、Github、淘宝网、百度、搜狐微博、人人、360、网易等等) 使用方式: 1、使用命名空间 use Org\ThinkSDK\ThinkOauth; 2、设置三方登录的类别并赋予一个变量 $type = ThinkOauth::getInstance('qq'); 3、设置配置文件 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ), 上文中的(TYPE)为设置的类别,其值目前有以下几个: //腾讯QQ登录配置 THINK_SDK_QQ // 用户基本信息API接口 user/get_user_info //腾讯微博配置 THINK_SDK_TENCENT // 用户基本信息API接口 user/info //新浪微博配 THINK_SDK_SINA // 用户基本信息API接口 users/show。附加参数:'uid='.$obj->openid() //网易微博配置 THINK_SDK_T163 // 用户基本信息API接口 users/show //人人网配置 THINK_SDK_RENREN // 用户基本信息API接口 users.getInfo //360配置 THINK_SDK_X360 // 用户基本信息API接口 user/me //豆瓣配置 THINK_SDK_DOUBAN // 用户基本信息API接口 user/~me //Github配置 THINK_SDK_GITHUB // 用户基本信息API接口 user //Google配置 THINK_SDK_GOOGLE // 用户基本信息API接口 userinfo //MSN配置 THINK_SDK_MSN // 用户基本信息API接口 msn。附加参数:token //点点配置 THINK_SDK_DIANDIAN // 用户基本信息API接口 user/info //淘宝网配置 THINK_SDK_TAOBAO // 用户基本信息API接口 taobao.user.buyer.get。附加参数:'fields=user_id,nick,sex,buyer_credit,avatar,has_shop,vip_info' //百度配置 THINK_SDK_BAIDU // 用户基本信息API接口 passport/users/getLoggedInUser // 注意,百度的头像位置是http://tb.himg.baidu.com/sys/portrait/item/{$data['portrait']} //开心网配置 THINK_SDK_KAIXIN // 用户基本信息API接口 users/me //搜狐微博配置 THINK_SDK_SOHU // 用户基本信息API接口 i/prv/1/user/get-basic-info 4、实例化一个登录页面 redirect($type->getRequestCodeURL()); 这里的$type是第二部获取的结果 5、回调页面 $code = $this->get('code'); $type = 'QQ'; $sns = ThinkOauth::getInstance($type); //腾讯微博需传递的额外参数 $extend = null; if($type == 'tencent'){ $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey')); } //请妥善保管这里获取到的Tok
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值