实际开发海外版应用的时候,我们常常有使用google和fb的token和id来验证身份的情况,甚至或者一些功能公开的graph信息,本文主要交代怎么用token和id来验证

Google

实效性:1h左右
google是portal token,时效较短
google api官方文档:
https://developers.google.com/+/web/api/rest/latest/people/get
用plus/v1/people/me

curl -i -X GET https://www.googleapis.com/plus/v1/people/me?access_token=**********************************
HTTP/1.1 200 OK
Expires: Tue, 05 Mar 2019 15:01:18 GMT
Date: Tue, 05 Mar 2019 15:01:18 GMT
Cache-Control: private, max-age=0, must-revalidate, no-transform
ETag: "k-5ZH5-QJvSewqvyYHTE9ETORZg/xri2vuv6AV1k8KE0aWK5kGlzsVI"
Vary: Origin
Vary: X-Origin
Content-Type: application/json; charset=UTF-8
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Length: 597
Server: GSE
Alt-Svc: quic=":443"; ma=2592000; v="44,43,39"
 "kind": "plus#person",
 "etag": "\"k-5ZH5-QJvSewqvyYHTE9ETORZg/xri2vuv6AV1k8KE0aWK5kGlzsVI\"",
 "emails": [
   "value": "*************",
   "type": "account"
 "objectType": "person",
 "id": "117939193***28910574",
 "displayName": "吴**",
 "name": {
  "familyName": "吴",
  "givenName": "**"
 "image": {
  "url": "https://lh3.googleusercontent.com/-aej0VOU43QM/AAAAAAAAAAI/AAAAAAAAAAA/ACHi3rfMtH2********oo7o4t-uWSbs-Q/mo/photo.jpg?sz=50",
  "isDefault": true
 "isPlusUser": false,
 "language": "zh_CN",
 "verified": false,
 "domain": "**.com"

可以拿到id,用id做验证即可,当然也可以看到,这里面还有一些别的信息,这部分是用户授权过的公开信息,是可以拿来使用的

Facebook

实效性:7d以上
用/me接口验证token和id
facebook api文档:
https://developers.facebook.com/docs/graph-api/reference/user/

curl -i -X GET "https://graph.facebook.com/me?fields=id,name,birthday,email&access_token=*******************"
HTTP/1.1 200 OK
ETag: "3804baa4db2f427d875fae9cd405a6e8d2f35734"
x-app-usage: {"call_count":0,"total_cputime":0,"total_time":0}
Content-Type: application/json; charset=UTF-8
facebook-api-version: v2.8
Strict-Transport-Security: max-age=15552000; preload
Pragma: no-cache
x-fb-rev: 4820028
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
x-fb-trace-id: ChQkh+eY0J8
x-fb-request-id: A2xSboVNZKQ9di4hPzoHAwA
Expires: Sat, 01 Jan 2000 00:00:00 GMT
X-FB-Debug: yO3t0p9EnfzdMQWwKCM5JeLHumJm5eHenj8o4tIWYkIuV2PyE7HRnFwBxywPAaRuIZRDdvj1InaIz/elzQEo9Q==
Date: Tue, 05 Mar 2019 10:37:30 GMT
Connection: keep-alive
Content-Length: 53
{"id":"18935564***2610","name":"\u5434*******"}

此处指定了id,name,birthday,email,不过birthday,email我没填,所以此处获取不到。
但是id是必然可以获取的,此时就可以通过token和id来做校验了

实际开发海外版应用的时候,我们常常有使用google和fb的token和id来验证身份的情况,甚至或者一些功能公开的graph信息,本文主要交代怎么用token和id来验证Google实效性:1h左右google是portal token,时效较短google api官方文档:https://developers.google.com/+/web/api/rest/latest/peopl...
使用Google OpenID Connect令牌进行身份验证 本节介绍根据安全边界进行身份验证,这要求客户端提供有效的OpenID Connect令牌。 这些安全范围不会保护Google API,但会保护您在某些Google Cloud产品之后部署的服务。 例如,如果您在Cloud Run上部署到Cloud Functions或应用程序,则可以启用边界,以便任何要调用该功能或​​您的应用程序的客户端都必须出示Google发行的ID令牌。 这些令牌不是用于直接调用Google服务或API(例如Google Compute Engine API或Cloud Storage Bucket)的Oauth2 access_tokens ,而是声明身份并由Google签名的id_tokens。 什么是id_token? OpenIDConnect(OIDC)令牌签署JSON网络令牌JWT用来断
How to refresh Facebook accesstoken   python代码:     可以用vs code来运行,依赖python2.*,如果使用python3.*可能会出现部分包不兼容     short-term token获取long-term token:       通过long-term token来获取long-term token,其有效期不会改变=》无...
Hunters
 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1735    Accepted Submission(s): 
 1308
 Problem Description
 Al...
Java是一种广泛使用的高级编程语言,其中token生成和验证是其中一个常见的任务。Token是在身份验证和安全方面经常使用的令牌,它是一种内置的安全机制,用于验证和授权用户的身份。以下是java中token生成和验证的基本原理和过程: Token生成: 1. 首先需要一个密钥来生成token,密钥是一个长字符串,可以使用任何随机数生成器生成。 2. 通过使用标准Java库中的MessageDigest类,将密钥转换为一个散列值。 3. 组合散列值和将其与其他非敏感数据进行加密。 4. 生成的token可以包含用于标识用户身份和授权的信息,如用户ID,角色和时间戳等。 5. 最后,将token返回给客户端以便在后续的请求中使用。 Token验证: 1. 当客户端发出请求时,需要将token作为请求头中的参数附加。 2. 服务器端收到请求之后,通过解析request头部中的token,获取其中包含的用户信息和授权信息。 3. 通过与服务器端存储的token进行比较,验证token的合法性。如果token验证失败,则拒绝请求并返回错误信息。 4. 如果token验证成功,则允许请求,并执行请求的操作。 总之,token生成和验证是保证用户身份验证和安全授权的重要手段,Java具有良好的token支持,可以轻松地生成和验证token。它可以提高应用程序的安全性,保护用户数据,避免恶意攻击和不良行为。