Node.js에서 Google API를 사용하는 OAuth 2.0

모든 비동기, 연결 및 기타 모든 JS shamaldingdongs로 인해 Javascript로 간단한 작업을 수행하는 것조차 적어도 나 같은 초보자에게는 압도적으로 느껴질 수 있습니다.

서문으로, 저는 현재 내 베팅을 추적하기 위한 간단한 매치 베팅 추적기인 내 애플리케이션을 개발 중이며 앱에 OAuth 인증을 추가하기로 결정했습니다. 왜 안돼.

가장 먼저 한 일은 Google 콘솔에서 계정을 설정하고 OAuth 2.0에 대한 반짝이는 새 자격 증명(클라이언트 ID 및 클라이언트 암호)을 얻은 것입니다.

모든 토큰과 비밀 등을 포함한 인증 흐름을 이해하는 데 어려움을 겪었습니다. 그러나 깊이 파고들면 실제로는 매우 간단했으며 Google이 프로세스를 매우 간단하고 감히 우아하게 만드는 방법에 감사하기 시작했습니다.

내가 한 첫 번째 일은 Google API를 얻는 것입니다.

  npm install googleapis

실제 프로그램에서:
API 라이브러리를 초기화하고 googleConfigs를 설정했습니다.


const { google } = require('googleapis');
const oauth2 = google.oauth2('v2');

const Oauth2Client = new google.auth.OAuth2(
    process.env.GOOGLE_CLIENT_ID,
    process.env.GOOGLE_CLIENT_SECRET,
    process.env.GOOGLE_REDIRECT, // this must match your google api settings
);



그래서 기본적으로 다음 3가지만 하면 되었습니다.
  • 클라이언트에 대한 리디렉션 URL을 가져옵니다
  • .
  • URL에는 토큰을 얻는 데 사용하는 코드도 포함되어 있습니다(사용자가 Google 계정에 로그인하는 경우).
  • 마지막으로 토큰을 사용하여 사용자 세부 정보를 가져옵니다
  • .

    1 단계:

    function getConnectionUrl() {
        return Oauth2Client.generateAuthUrl({
            access_type: 'offline',
            prompt: 'consent',
            scope: defaultScope
        });
    }
    
    //Call this function somewhere in the program to get URL:
    //const url = getConnectionUrl();
    

    2단계 및 3단계:

    function getUserDetails(code) {
        return Oauth2Client.getToken(code)   //use code to get the token
            .then(({ tokens }) => {
                Oauth2Client.setCredentials(tokens);     //add token to the Oauth credentials
            })
            .then(() => {
                return oauth2.userinfo.get({ auth: Oauth2Client });  // get userinfo with the newly updated credentials
            })
    }
    

    그래서 메인 프로그램에서 getConnectionUrl()을 사용하여 연결 URL을 얻었고 이 URL은 사용자 세부 정보를 얻기 위해 getUserDetails()에 전달한 URL의 코드를 제공했습니다.

    이것이 내 애플리케이션에서 작동하는 OAuth 인증을 얻은 방법입니다.

    읽어 주셔서 감사합니다. 피드백에 감사드립니다.

    내 리포지토리를 확인하려면 다음 링크를 참조하세요.
  • Matched-betting-tracker

  • 당신이 그것을 좋아한다면 그것을 별표하십시오.

    추신 트위터에서 저를 팔로우해주세요. 정말 감사하겠습니다.

    *업데이트*

    async-await 2단계와 3단계를 사용하면::로 줄일 수 있습니다.

     function async getUserDetails(code) {
       const {tokens} = await Oauth2Client.getToken(code);
       Oauth2Client.setCredentials(tokens);
       const usr_info = await oauth2.userinfo.get({auth: Oauth2Client});
       return usr_info;
     } 
    
    

    이것은 더 깨끗해 보이고 async await는 사용하기 더 직관적인 것 같습니다.

    좋은 웹페이지 즐겨찾기