【发布时间】:2016-01-27 21:34:03
【问题描述】:
Twitter 的 API 需要发送 Authorization 标头,该标头是 API 密钥的 base64 编码与 API 密钥连接。在 Node 中,我使用:
var base64 = new Buffer(apiKey + ':' + apiSecret).toString('base64');
发送的header变成:
Authorization: 'Basic ' + base64
base64 编码字符串“apiKeyHere:apiSecretHere”的意义何在?为什么不直接接受包含原始 api 凭据的 Authorization 标头?
这个问题类似于What is the purpose of base 64 encoding and why it used in HTTP Basic Authentication?,但投票的答案并没有完全回答我的问题。 Twitter 的 api 密钥和 api 密钥已经是 HTTP 兼容字符。它们看起来像这样(这些不是真实的):
消费者密钥(API 密钥)8dme3utVQfOhlPk5BUG9XbFxR
消费者秘密(API 秘密)QFZXoC7MP72JZtGMBNpjLGI4Vl1xr1q9dyPLp3u7jGtkESpbLm
那么为什么用 base64 编码呢?此外,该帖子指出“编码的目的是将可能在用户名或密码中的非 HTTP 兼容字符编码为与 HTTP 兼容的字符。”用户名和密码不是已经是 HTTP 兼容字符了吗?
【问题讨论】:
-
我想这在某种程度上回答了它,但不完全是。该答案指出“编码的目的是将可能在用户名或密码中的非 HTTP 兼容字符编码为与 HTTP 兼容的字符。”。 Twiter 的 apiKey 和 apiSecret 已经是 HTTP 兼容字符。用户名和密码不是已经包含 HTTP 兼容字符了吗?
标签: oauth oauth-2.0 base64 twitter-oauth bearer-token