听说造了登陆之后就没人愿意来评论了. 于是窝决定去造个第三方登陆.
于是花了一晚上造出了oauth组件. (其实有sdk的啊摔)
于是有了github登陆. 其实还有企鹅啥的. 然而企鹅就是强行降低网站的逼格这怎么行呢. (其实是企鹅强行要求sdk懒得搞了)
oauth的登陆简单过程是酱的(有点三次握手的感觉)
-
网站要去第三方申请一个application. 然后会得到
client_id
和client_secret
. 然后把登陆的链接接到指定的页面去, 用get把client_id
和泥要哪些数据传过去. -
网站会和用户交流人生(登陆). 然后会用get方式调用
callback
, 这个是在注册application的时候指定的.callback
的get参数里有一种东西叫code
. 这东西要用. -
用
code
来换access_token
. 把code
和client_id
和client_secret
一起当post参数传给第三方指定的第二个url. 如果没错会返回access_token
, 这玩意是真正用来换数据的. -
用
access_token
再去第三方提供的第三个url来get用户的数据, 比如avatar_url
什么的.
那这和登陆有啥关系呢? 在第3步的时候如果泥得到了正确的access_token
, 泥就可以认为用户正确登陆辣~
然后就发生了一件鬼蓄的事情: 窝在去和github换数据的时候, 莫名其妙地就被403了. 大概就是酱(get为粟)
function getData($url){
$opts = array(\'http\' =>
array(
\'method\' => \'GET\'
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
return $result;
}
赶紧google了一下发现github会按照心情拒绝php发送的请求.
于是窝假装窝不是php而是善良可爱的少年就好了啊2333.于是强行骗人.
function getData($url){
$opts = array(\'http\' =>
array(
\'method\' => \'GET\',
\"header\" => \"User-Agent: Mozilla\"
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
return $result;
}
假装窝叫Mozilla
. 然后似乎github就不拒绝请求了. (妈妈说骗人是不好的5555)