Twitter API访问令牌撤销:API调用正确性验证咨询
撤销Twitter应用访问权限的正确API调用指南
看起来你已经走通了OAuth授权的第一步,现在要搞定令牌撤销的环节对吧?其实Twitter专门提供了OAuth 1.0a的撤销令牌API,能确保用户下次登录必须重新授权,下面给你拆解具体操作:
核心API端点
你需要调用的是POST请求:https://api.twitter.com/oauth/invalidate_token
调用关键要求
这个请求必须和你获取access_token时一样,用OAuth 1.0a签名方式,需要带上这些参数:
- 你的应用
consumer_key和consumer_secret - 要撤销的用户最终access_token(注意不是request_token)
- 该access_token对应的
token_secret
重要注意事项
- 必须用POST请求,GET请求会直接被拒绝
- 签名时一定要用用户的access_token,别搞错成request_token了
- 调用成功后,Twitter会返回JSON格式的失效令牌信息,不用保存,直接忽略就行
- 别忘了同步删除你本地数据库里该用户对应的Twitter令牌记录,避免后续代码误用失效令牌
伪代码示例(Python)
如果用requests-oauthlib库,代码大概是这样:
from requests_oauthlib import OAuth1Session # 替换成你自己的应用信息和用户令牌 consumer_key = "你的应用API密钥" consumer_secret = "你的应用API密钥密钥" user_access_token = "要撤销的用户访问令牌" user_token_secret = "对应访问令牌的密钥" # 初始化OAuth会话 twitter_session = OAuth1Session( consumer_key, client_secret=consumer_secret, resource_owner_key=user_access_token, resource_owner_secret=user_token_secret ) # 发送撤销请求 response = twitter_session.post("https://api.twitter.com/oauth/invalidate_token") # 验证结果 if response.status_code == 200: print("令牌已成功撤销,用户下次登录需重新授权") # 这里记得删除本地数据库中该用户的Twitter令牌记录 else: print(f"撤销失败:状态码{response.status_code},响应内容:{response.text}")
验证撤销是否生效
撤销后,你可以用那个失效的access_token调用一个需要授权的API(比如GET https://api.twitter.com/1.1/account/verify_credentials.json),如果返回401 Unauthorized错误,就说明撤销成功了——此时用户再登录你的应用,就会被引导到Twitter的授权页面,必须重新确认授予权限才能登录。
内容的提问来源于stack exchange,提问作者ChadH
相关产品推荐
相关产品推荐

