2010-01-02 109 views
20

oauth_token_secret当我从Twitter获取访问令牌,我得到类似如下:什么是Twitter中的OAuth

oauth_token=14410002-F5Bi8hMpQbXamM8MBBw8zw2LYIBL4FEBvxLZfaSwX&oauth_token_secret=K8QNvDcC2f9qtGU8tfa75exwLZ2Sc1jeHrThnk6Co&user_id=14410002&screen_name=blueonion 

什么oauth_token_secret?这是用来签署受保护请求的,还是仍然使用的consumer_key。

+9

我发现了规范和尽职尽责地阅读。我错过了部分oauth_token_secret,部分原因是该规范将其称为“令牌秘密”。你的暗示是,我没有在提问之前尽力去尝试是没有根据的,在这里也不合适。 – 2010-01-03 15:17:26

回答

15

简短的答案是:oauth_tokenoauth_token_secret既弥补其用于签署请求请求令牌。

这里有一些资源,这可能会帮助:(ESP第6节)

这不是消费者的关键。消费者密钥仅用于识别消费者(=调用Twitter的代码),而请求令牌绑定给用户。 Request Token包括一个公共部分和一个秘密部分,它们都用于签署请求,如第9节中的说明所述。

但是您可能想使用其中一个库并查看示例。

+0

果然,在9.2节中我正视着我。我一直“看”消费者秘密,并跳过令牌秘密。 OAuth规范是一个非常简单的阅读,我仍然设法跳过它。谢谢。 顺便说一句,我发现你并不需要的token_secret在Twitter上获得访问令牌。可能是一个错误,这是我怀疑的原因造成了我的困惑。 – 2010-01-03 15:14:43

9

这其实是一个很好的问题,因为Twitter的出现已经打破这个要求的OAuth 1.0标准。我偶然发现,如果您从签名密钥中省略了oauth_token_secret,即。

$signing_key = encode_rfc3986($consumer_secret).'&'; 
请求访问令牌时

代替

$signing_key = encode_rfc3986($consumer_secret).'&'.encode_rfc3986($oauth_token_secret); 

,既会工作只是Twitter的一样。

在我的网站我开发的Twitter的OAuth之前,我开发的任何其他的OAuth 1.0服务提供商的身份验证和我不能找出原因,甚至需要一个oauth_token_secret。有一次,我尝试了相同的代码了对雅虎和LinkedIn我有一个讨厌的冲击,因为这对于Twitter的工作相同的代码没有对其他服务提供商合作(即我使用上空时,我应该使用第二片断已经在第一个片段)

+0

嘿,测试过。还是这样! ;)你有没有在twitter上报告过它? – sebilasse 2016-12-26 17:08:28