听说造了登陆之后就没人愿意来评论了. 于是窝决定去造个第三方登陆.

于是花了一晚上造出了oauth组件. (其实有sdk的啊摔)

于是有了github登陆. 其实还有企鹅啥的. 然而企鹅就是强行降低网站的逼格这怎么行呢. (其实是企鹅强行要求sdk懒得搞了)

oauth的登陆简单过程是酱的(有点三次握手的感觉)

  1. 网站要去第三方申请一个application. 然后会得到client_idclient_secret. 然后把登陆的链接接到指定的页面去, 用get把client_id和泥要哪些数据传过去.

  2. 网站会和用户交流人生(登陆). 然后会用get方式调用callback, 这个是在注册application的时候指定的. callback的get参数里有一种东西叫code. 这东西要用.

  3. code来换access_token. 把codeclient_idclient_secret一起当post参数传给第三方指定的第二个url. 如果没错会返回access_token, 这玩意是真正用来换数据的.

  4. 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)