我正处于使用 this cordova插件检索userID和oAuthToken的阶段.
现在,我需要将这些凭据发送到我的服务器,然后在服务器端验证令牌的完整性.基本上我正在尝试执行this部分流程.
我很困惑,我应该尝试使用Google客户端API验证哪个令牌.我应该使用userID还是oAuthToken?
文档提到验证用户ID,但我发现这很奇怪.这不意味着,如果有人获得我的用户ID,他们可以基本上闯入我的服务器?用户ID永远不会改变(如果我在这里错了,请纠正我)所以对此进行验证似乎不安全.验证设置为过期的oAuthToken是不是更有意义?或者用户ID是否也会过期?
任何的建议都受欢迎.
谢谢,
菲
编辑:
对任何感兴趣的人由于不完全理解Google Api可以返回的三个令牌,我产生了混乱:userID,oAuthToken和IDToken.
简而言之:返回userID,其中大多数API调用标识用户.这似乎是不变的.当我访问谷歌API作为AndroID客户端时,我的案例中的oAuthToken被返回.访问API作为Web客户端时返回tokenID.因此,那些希望使用移动检索令牌进行服务器端验证的人应该将API作为Web客户端访问.然后,返回的令牌可以使用类似于下面接受的答案的代码在服务器端验证.
此PHP片段接收以IDtoken =开头的http请求,验证您的令牌服务器端并返回完整的数组或用户电子邮件:
<?PHP$inputRaw = file_get_contents('PHP://input');$IDToken= substr($inputRaw,8);$fp = fopen('twoStepOutput.txt','a');$url = 'https://www.GoogleAPIs.com/oauth2/v3/tokeninfo?ID_token='.$IDToken;$ch = curl_init($url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$response = curl_exec($ch);$Json = Json_decode($response,true);curl_close($ch);$userEmail = $Json["email"];$clIEntID = $Json["azp"];//fwrite($fp,date("YmdHis")."\r\n$IDToken\r\n");fwrite($fp,date("YmdHis")."\r\n");fwrite($fp,"email Confirmed by Google:[$userEmail]\r\n");//print_r($Json); // returns array console readableprint_r($clIEntID); // returns Google clIEnt ID for verification (without transfering user data)fclose($fp);?>
万一你怀疑,这就是IDToken的样子:
eypZCI6OiJsUzI1JhbGciNIISImtIjk4MzQxMzgyMWJmMzhiNTJlM4OTI2YTllMTc0YTc5MWMwNGMifQ.eyJpc3MiOi3VizExYJhY2NvDW50cy5nb29nbGUuY29tIiwicmeIjoiMTAzNDUyNjAwODM5NzY3MjU2MDE0IiwiYXpwIjoiMTA3OTMxMTEyNTc1OS1lYWJhbWV0b2ZldjIwY28zbGQ5b2o1YWQwMzFuZG9nMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImVtYWlsIjoIDG9ueWdpbGJyQGdtYWlsLmNvbSIsImF0X2hhc2giOiJaSkhxbUZHcnR5Y29kdEhhOGJvMEYWY1NTk2NzUsImV4cCVBIiwiZW1haWxfdmVyaWZpZWQiOnRyDWUsImF1ZCI6IjEwNzkzMTExMjU3NTkt1ldG9mZXYyMGNvM2xkOW9qNWFkMDMxbmRvZzAuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJpYXQiOjE0MzZWFiI6MTQzNjU2MzI3NSwibmFtZSI6IlRvbnkgR2lsIiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tQVREckRSbF9UdFEvQUFBQUFBQUFBQUkvQUFBQUFBQUFBRncvOVdDQnZkYlpUTEEvczk2LWMvcGhvdG8uanBnIiwiZ2l2ZW5fbmFtZSI6IlRvbnkiLCJmYW1pbHlfbmFtZSI6IkdpbCIsImxvY2FsZSI6ImVuIn0.L4peW11TD0bDolvYKNY60IEZ1sbZfW9gEImcuxVA5f9U_4N49Io1CFXoGKmEPR_ij4q38tF2drPMOKijQePwlrxDui37ubzAdVkuksCJUobzjD1_eccF_8GldP5Y1_XsU8xrZeEnfabfiYpr-VwolzIENNUdy9SUbUWjMHNcvf4dGFMzE_SONHr57igjHK3rGkbvLo-UduFngm3e- EL0YR2zOKOVj1Qs8g8_qpWgkn8XABTme1thmuU8OfC-HaF9_B2Zk2UCsnOu4APIYZk3DPIKgeX6AF11kYnzgvciYheWeddly0foT4G00C7w_wgtd-LSRw0XZltec_MPMa2QSA
总结以上是内存溢出为你收集整理的android – 如何正确验证Google令牌的完整性?全部内容,希望文章能够帮你解决android – 如何正确验证Google令牌的完整性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)