一、创建应用
登录github,点击设置
好了,到这里应用就已经创建完毕了……
二、效果展示
我新建了一个站点,随便写了一个登陆页面:
效果展示:
三、总体流程
首先我们申请完应用后会有Client ID
和Client Secret
1、通过这两个参数我们去访问:https://github.com/login/oauth/authorize?client_id='你的client id'
,访问后会返回一个code到我们的创建应用的时候填写的那个callback回调地址。
2、有了code
,我们在通过Client ID
和Client Secret
和code
这三个参数去访问: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");