twitter网页版

您所在的位置:网站首页 推特官网在线浏览 twitter网页版

twitter网页版

#twitter网页版| 来源: 网络整理| 查看: 265

twitter的三方登录当时研究了不短时间,也算是第一次做三方登录的东西,将oauth标准彻头彻尾的了解了一下,下面是一些当时总结的资料,参考了很多博文

1.去官网注册账号并在开发者网站创建项目

https://ww.twitter.com

111623_mTjc_3361217.png

 

https://dev.twitter.com/

111630_Ynqa_3361217.png

创建好的项目

111629_RKIt_3361217.png

111629_LmVz_3361217.png

 

2.首先我们开始创建项目

111737_mKDz_3361217.png

这边有一个坑,如果你的Twitter账号没有绑定手机号,是创建不成功的。需要打开你的登陆账号-设置与隐私,注册手机号,验证短信是浙江嘉兴的,不是骗子!(如图)

111859_EYRP_3361217.png

项目创建成功后,上开发者官网

https://dev.twitter.com/oauth/reference/post/oauth/request_token

111907_4kjK_3361217.png

Twitter使用oauth1.0

https://oauth.net/core/1.0/#anchor9

我简单介绍一下:

112146_Hrt7_3361217.png

1.Consumer向Service Provider请求Request Token 2.Service Provider验证后返回未授权的Request Token 3.Consumer将User跳转到Service Provider,让其同意授权 4.Service Provider接到User的授权许可后,将User重定向到Consumer 5.Consumer在用户跳转回来后拿到已授权的Request Token,再次向Service Provider请求Access Token 6.Service Provider验证已授权的Request Token,向Consumer提供Access Token 7.Consumer使用Access Token,访问User的资源 

112244_SDGh_3361217.png

看着有点儿蒙,其实就是3个url跳转,每个url赋一堆参数,参数类型图上已经给出:

112256_dsp1_3361217.png

Request token url:参数:

oauth_consumer_key, 就是我们在创建应用时的 Consumer key

oauth_signature_method,Twitter 支持 HMAC-SHA1

oauth_timestamp,//unix时间戳

oauth_nonce,//每次自己随机生成的字符串,能保证每次的都不同就好了

oauth_version,//现在为 1.0

oauth_callback,//创建项目时写的回调地址

oauth_signature,//签名

 

oauth_consumer_key、oauth_callback在我们创建项目时已经生成,随机数和时间戳自己生成,版本号固定为1.0

oauth_signature_method //签名方法,有3种:HMAC-SHA1,RSA-SHA1, PLAINTEXT,由于twitter只支持HMAC-SHA1,故此参数值固定,为HMAC-SHA1

 

重点:oauth_signature

 

Twitter使用的是HMAC-SHA1方法进行签名

 

 签名串(text)的构成:HttpMethod&url&参数。三个红色串必须用urlencode进行编码。编码中的%xx符号,xx中的字母必须为大写,其中HttpMethod为GET/POST/PUT/DELETE等http方法之一,必须全为大写,编码后仍为本身;url为不带参数的url必须全为小写

 

参数即此次请求中的除了oauth_signature以外的所有参数,格式为按照[参数名=参数值]的格式中间用&隔开,按字典排序

 

.密钥(key)的构成:oauth_consumer_secret&oauth_token_secret

oauth_token_secret在第一步时还没获得,那么即为空,但&得保留

 

生成signature – signature也要用url encode进行编码,一些资料说用post需要,get不需要。我都加了

 

例子:

encryptText:

GET&https://twitter.com/oauth/request_token&oauth_consumer_key=7FVlREOKCuQLzukCSSdQdYhbD&oauth_callback=http://localhost:8080/Twitter_sso/index.jsp&oauth_nonce=-1111514832&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1490154283&oauth_version=1.0

encryptKey:

9PIodcMsv71WveGjwNMr3vDnwXWe4HwSE8vUjZZKgchhetHHr3&

signture:

116D418A356618BAD16934AFEF3625CAB3CA38B6

 

 

 

 

这是第一条请求,注意了,这里有坑:

官网生成例子给我们的Request token url是这样的:

112326_SEqH_3361217.png

各种资料显示也是,但是如果这样写访问不到:

112342_Q8sm_3361217.png

你需要去掉api,直接写Twitter.com 并且在

oauth_signature=116D418A356618BAD16934AFEF3625CAB3CA38B6oauth_timestamp=1490154283

注意这里没有用&关联

下面是正确的例子:

https://twitter.com/oauth/request_token?oauth_consumer_key=7FVlREOKCuQLzukCSSdQdYhbD&oauth_callback=http://localhost:8080/Twitter_sso/index.jsp&oauth_signature_method=HMAC-SHA1&oauth_signature=116D418A356618BAD16934AFEF3625CAB3CA38B6oauth_timestamp=1490154283&oauth_nonce=-1111514832&oauth_version=1.0

112403_hU1e_3361217.png

成功之后页面得到一个未授权的oauth_token和oauth_token_secret

oauth_token在下一次生成签名时需要添加进去,oauth_token_secret

用于签名生成秘钥时,之前这一步是没有拿到的,留了空。在执行第二个url时需要添加进去

并且在第二步访问url中将oauth_token也作为一个新参数

将第二步请求参数拼接好后输入如下图:

112422_q9br_3361217.png

点击授权:

如图,这是又一个坑。概率很大出现空白页,什么都不显示。目前没找到什么问题

112441_ezMF_3361217.png

如果我们直接将url输入访问是会报错的

112457_n45N_3361217.png

如果访问成功,这一步会重定向到你的callbackurl并且url会显示授权之后的oauth_token和一个oauth_verifier(PIN码)

112512_FZTr_3361217.png

这一步我们在生成签名和访问第三个url时需要把oauth_verifier再添加进去,生成第三个url

例子:

https://api.twitter.com/oauth/access_token?

oauth_consumer_key=7FVlREOKCuQLzukCSSdQdYhbD&

oauth_signature_method=HMAC-SHA1&

oauth_signature=D569EEA2BABD294997F729AD4ADFCCA81DE7B648&

oauth_timestamp=1490105740&

oauth_token=6uQkvwAAAAAAzrh-AAABWvEoiFI&

oauth_nonce=-363810527&

oauth_signature_method=HMAC-SHA1&

oauth_verifier=fTOkmCRNUlRBR5B2vsWDCSgJj5Zc3M1U&

oauth_version=1.0

成功之后页面:

112540_Y09U_3361217.png

返回一个用户的最终需要的access_token与access_token_secret以及用户信息

整个过程很麻烦,不过直接用sdk会相当简单,在我的另一篇博客里有相关实现

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3