0

我按照文档说的那样做了 Oauth 流程,得到了 oauth_token 和 oauth_token_secret,然后从我的 nodejs 服务器我尝试了这个请求:

request.get({
headers: {
    "User-Agent": "FooBarApp/3.0",
    "Authorization": {
        oauth_token:"my token",
        oauth_token_secret: "my secret token",
        "OAuth oauth_consumer_key":"mykey",
        "oauth_nonce":Date.now(),
        "oauth_signature":"mypass&",
        "oauth_signature_method":"PLAINTEXT",
        "oauth_timestamp":Date.now(),
        "oauth_verifier":"users_verifier"
    },
    "Content-Type": "application/x-www-form-urlencoded"
},
url: "https://api.discogs.com/oauth/identity"

我还尝试删除“授权”中的所有参数,除了我的两个令牌但没有工作。有什么线索吗?

4

1 回答 1

0

文档是错误的,Discogs 可能懒得更新它。我试图将文档的更正发送给技术团队,但这是一条死胡同。

他们的身份验证机制符合 OAuth 1.0 修订版 A,即使他们另有宣传。

同时,以下是您发出经过身份验证的请求所需的标头:

const request = require('request');

const options = {
  url: 'https://api.discogs.com/oauth/identity',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'OAuth oauth_consumer_key="YOUR_CONSUMER_KEY", oauth_nonce="' + Date.now() + '", oauth_token="OAUTH_TOKEN_RECEIVED_FROM_STEP_4", oauth_signature="YOUR_CONSUMER_SECRET&OAUTH_TOKEN_SECRET_RECEIVED_FROM_STEP_4", oauth_signature_method="PLAINTEXT", oauth_timestamp="' + Date.now() + '"',
    'User-Agent': 'YOUR_USER_AGENT/1.0'
  }
};

request(options, (err, res, body) => {
  if (!err && res.statusCode == 200) {
    console.log(JSON.parse(body));
  }
});

祝你好运 !

于 2020-07-21T02:52:28.827 回答