Node JS를 사용하여 이미지로 트윗하기

4654 단어 nodetwitterjavascript

소개



이것은 Node JS에서 Twitter API를 사용하는 방법에 대한 네 번째 튜토리얼입니다. 내 이전 자습서가 거기에 나열되어 있습니다 👆.

첫 번째 튜토리얼에서 Twitter API와 Node JS를 사용하여 텍스트로만 트윗하는 방법을 보여주었습니다.
그런 다음 이미지로 트윗하는 방법에 대한 질문을 받았습니다. 덕분에
그리고
, 그래서 여기에서 이 작업을 수행하는 방법을 설명하겠습니다.

시작하기 전에



Twitter 개발자 계정이 필요하며 기본 구성은 동일한 구조를 따르므로 자세한 설명을 참조하십시오.

시작하자



이미지를 트윗하기 위한 프로세스는 두 가지 요청으로 구성됩니다.
1- 이미지 업로드
2- 해당 이미지로 트윗하기
  • 여기서 새로운 점은 각 요청이 Twitter API URL에서 다른 하위 도메인을 사용한다는 것입니다. 즉, config.js 파일에서 약간의 변경이 수행됩니다.

  • const twitter = require('twitter-lite');
    
    exports.newClient = function (subdomain = 'api') {
        return new twitter({
            subdomain,
            consumer_key: '',
            consumer_secret: '',
            access_token_key: '',
            access_token_secret: ''
        });
    }
    

  • 여기에서 JSON 개체 대신 함수로 반환되도록 구성을 변경했습니다. 이 함수는 단순화를 위해 정의를 여기로 옮긴 twitter lite 클라이언트를 반환합니다. 그렇게 한 이유는 함수 매개변수에서 설정할 수 있는 새로운 구성 속성 하위 도메인 때문입니다.

  • - 이제 index.js 파일을 편집할 준비가 되었습니다. config.js 파일을 변경한 후 몇 가지 사항을 변경해야 합니다.
    1- 트위터 라이트 정의 제거
    2- 나중에 사용할 두 하위 도메인에 대한 twitter lite 클라이언트 정의

    const apiClient = config.newClient();
    const uploadClient = config.newClient('upload');
    


  • 이 사진을 트윗에 사용하도록 했습니다.
  • 그런 다음 이미지 파일을 처리하고 fs 및 경로 모듈을 정의하여 업로드할 준비를 합니다.

  • const fs = require('fs');
    const path = require('path');
    


  • 그런 다음 파일을 64 기반 파일로 읽습니다.

  • const mediaFile = fs.readFileSync(path.join(__dirname, 'hello_world.png'));
    const base64image = Buffer.from(mediaFile).toString('base64');
    


  • 다음으로 요청이 다른 요청의 결과에 따라 달라지는 경우에서 수행한 작업과 비슷합니다.
  • 첫 번째 요청은 미디어/업로드 끝점과 업로드 하위 도메인을 사용하여 이미지를 업로드하기 위한 것입니다. 이것은 여기서 uploadClient를 사용하는 것을 의미하고 다음 단계를 위해 저장하는 media_id 속성이 있는 객체를 반환합니다.

  • // Uploading an image
    uploadClient.post('media/upload', { media_data: base64image })
        .then(media => {
    
        console.log('You successfully uploaded media');
    
        var media_id = media.media_id_string;
    }).catch(console.error);
    


  • 이 요청에 대한 전체 세부 정보를 볼 수 있습니다.
  • 두 번째 요청은 apiClient를 사용하는 이미지와 함께 트윗하기 위해 statuses/update 끝점을 사용하는 일반 트윗입니다.

  • // tweeting with text and image
    apiClient.post('statuses/update', { status: 'Hello world!', media_ids: media_id })
        .then(tweet => {
    
        console.log('Your image tweet is posted successfully');
    }).catch(console.error);
    


  • 이 요청에 대한 전체 세부 정보를 볼 수 있습니다.
  • 이제 모든 것이 준비되었으며 다음을 사용하여 명령 프롬프트에서 앱을 실행할 수 있습니다.

  • node index.js
    


  • 그게 다야 이미지가 트윗에 추가되고 친구의 타임라인에 표시됩니다 😁.

  • 다음은 index.js 파일의 전체 코드입니다.

    const fs = require('fs');
    const path = require('path');
    const config = require('./config');
    const apiClient = config.newClient();
    const uploadClient = config.newClient('upload');
    
    const mediaFile = fs.readFileSync(path.join(__dirname, 'hello_world.png'));
    const base64image = Buffer.from(mediaFile).toString('base64');
    
    uploadClient.post('media/upload', { media_data: base64image })
        .then(media => {
    
        console.log('You successfully uploaded media');
    
        var media_id = media.media_id_string;
        apiClient.post('statuses/update', { status: 'Hello world!', media_ids: media_id })
            .then(tweet => {
    
            console.log('Your image tweet is posted successfully');
        }).catch(console.error);
    
    }).catch(console.error);
    


    다음 자습서에서는 twitter API에 대해 자세히 살펴보겠습니다. 여러분과 공유할 몇 가지 아이디어가 있으니 계속 지켜봐 주세요 😉

    전체 코드를 보려면 my github page을 방문하십시오.

    내 튜토리얼이 마음에 들면 여기에서 지원하고 Twitter에서 나를 팔로우하세요.

    좋은 웹페이지 즐겨찾기