在写一个用户登录的时候遇到点小麻烦,不想写复杂但还是想验证下真实信息,所以就打算直接用第三方登录来实现了。
看了下各大门户的接口没发现有提供用户邮箱的,包括QQ的登录居然不含QQ号,实在让人无语。因此安心用Google的登录吧,虽然大部分用户连接不上,但满足我的一部分要求就够了。
可以看到这里要求了两项信息,分别为邮箱地址和用户名称头像基本信息,主要的就这点,没有多余的步骤即可得到一个经过验证的邮箱地址。所谓节约注册时间也是指这些,不像其他网站非常不方面,第三方登录在最开始注册的时候反倒麻烦了,不过也符合一些用户信息采集的需求,可有可能是系统的限制。
创建一个验证项目在https://console.developers.google.com/,只有繁体中文,稍微不爽,可以好好寻找下,比如创建后导出JSON会得到如下信息。
{
"web": {
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"client_secret": "xxx-xxx",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"client_email": "xxx-xxx@developer.gserviceaccount.com",
"redirect_uris": ["https://my.changda.club/Home/oauth2callback"],
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xx-xx@developer.gserviceaccount.com",
"client_id": "xxx-xxx.apps.googleusercontent.com",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"javascript_origins": ["https://my.changda.club"]
}
}
这样一来就很明了了,利用client_id生成一个登录请求,然后在服务器利用client_secret获取登录信息,具体可参见https://developers.google.com/accounts/docs/OAuth2WebServer这里面的内容,一步一步还是挺简单的,唯独有个地方让人琢磨不透,就是在使用/oauth2/v3/token获取Tooken时返回的一个id_token,查询可得为一个JWT (JSON Web Token),反正包含了一部分信息需要自己解析,解析可得如下:
"at_hash":"HK6E_P6Dh8Y93mRNtsDB1Q",
"email_verified":"true",
"sub":"10769150350006150715113082367",
"azp":"1234987819200.apps.googleusercontent.com",
"email":"jsmith@example.com",
"aud":"1234987819200.apps.googleusercontent.com",
"iat":1353601026,
"exp":1353604926,
"hd":"example.com" }
但这并非直接取得,利用PHP可用下面的方式参考,数据分为三段用点隔开,首部为加密方式,中间为基础信息,最后为加密数据,可以自行参考。
* 解析id token 数据
* @param $data
* @return bool
*/
protected function parseIdToken($data){
list(, $msg) = explode(".", $data);
if(empty($msg)){
return false;
}
$data = json_decode(base64_decode($msg), true);
if(!isset($data['sub'])){
return false;
}
$this->uid = $data['sub'];
$this->app_uid = $data['aud'];
$this->email = $data['email'];
$this->email_verified = $data['email_verified'];
return true;
}
前面的所有数据为第一次查询所得,如果用户已存在直接登录即可,如果不存在可再次查询更多详细信息,对应的接口有GET https://www.googleapis.com/plus/v1/people/userId?access_token=1/fFBGRNJru1FQd44AzqT3Zg,用于查看基础信息,此时要的东西全部获取,然后直接注册登录,跳转一步到位,很快。
欢迎访问 : https://my.changda.club 测试。
求最简单的翻墙方法,,。。
自行VPS上安装shadowsocksx
这个简单吗?有教程吗?
前提是VPS在墙外,网上教程大把的
国内的。
那没可能了,网上多搜搜看有没有人共享吧。
mark一下
G+还能打开吗?等了很久都没反应
默认翻墙就可以了,能打开的。
还是小白的我,求翻墙教程,
shadowsocksx就行了,服务器自己搭建或寻找
还是谷歌的验证最靠谱
谷歌产品好多国内访问不了~
不是基本上全线不能访问么?
大局域网时代已经很少用google了。
局域网才有搜索的必要,很多技术类的东西百度真搞不定
回的好速度啊。看博客,貌似你会好多编程语言
如果在线看到了通知就会回。好多语言都是半吊子
加你好友了,以后请教的时候要多指导啊
我都很少用邮箱的呢····
我觉得除了网站登录以外确实用得少
反正我是没多大的用处的···
毕竟国内“邮箱”是个小众的东西,仅限于工作以及我们IT族。
算是吧,毕竟有些东西是面对小众群体,所以邮箱比较方便