听说造了登陆之后就没人愿意来评论了. 于是窝决定去造个第三方登陆.
于是花了一晚上造出了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....