簡體   English   中英

通過Battle.net授權

[英]Authorization via battle.net

我嘗試通過Battle.net在我的網站上創建身份驗證。 這是我第一次使用OAuth。 有文檔https://develop.battle.net/documentation/api-reference/oauth-api

現在,我可以獲取代碼,並希望通過代碼獲取訪問令牌。 我提供憑證。 使用Koa.js。

const { code } = ctx.query;
  const redirect_uri = 'http://127.0.0.1:3000/auth';
  const client_id = '0010d...25f44b31...5c34b12f4af7'
  const secret = 'MY_VERY_SECRET_CODE';
  const scope = 'wow.profile';
  if( !code ) ctx.redirect(`https://us.battle.net/oauth/authorize?response_type=code&client_id=${client_id}&redirect_uri=${redirect_uri}&scope=${scope}`);

  try {
    const { data } = await axios.post('https://us.battle.net/oauth/token', {
      grant_type: 'authorization_code',
      code,
      redirect_uri,
      client_id
    }, {
      auth: {
        username: client_id,
        password: secret
      }
    })
    console.log(data);
  } catch (e) {
    console.error(e)
  }


  ctx.body = {
    message: 'OK',
  }

重定向工程,我得到了code 但是,我應該如何使用獲得的code構建查詢? 但是我有錯誤

 data:
      { error: 'invalid_request',
        error_description: 'Missing grant type' } },

我應該使用表格數據類型。

formData.append('grant_type', 'authorization_code');
      formData.append('code', code);
      formData.append('redirect_uri', redirect_uri);
      formData.append('client_id', client_id);

      const { data: authData } = await axios.post('https://eu.battle.net/oauth/token', 
        formData,
        {
          auth: {
            username: client_id,
            password: secret,
          },
          headers: {
            'Content-Type': `multipart/form-data; boundary=${formData._boundary}`,
          }  
        },
      )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM