Ionic4 / Angular Опубликовать твит в Твиттере - PullRequest
3 голосов
/ 08 ноября 2019

Я разрабатываю приложение, в котором я бы хотел, чтобы пользователь нажал кнопку и отправил твит на свою временную шкалу. Есть несколько известных способов сделать это с Node.JS и Angular, но я ищу решение для достижения того, чего я хочу без запуска Node Server.

Есть ли способ встроить TwitterAPI в вашем IONIC / Angular APP. и я не ищу Ионный плагин TwitterConnect, поскольку у него нет метода POST.

РЕДАКТИРОВАТЬ

вот пример для Twitter, но как бы я реализовал это в Angular?

curl -XPOST 
  --url 'https://api.twitter.com/1.1/statuses/update.json?status=hello' 
  --header 'authorization: OAuth
  oauth_consumer_key="oauth_customer_key",
  oauth_nonce="generated_oauth_nonce",
  oauth_signature="generated_oauth_signature",
  oauth_signature_method="HMAC-SHA1",
  oauth_timestamp="generated_timestamp",
  oauth_token="oauth_token",
  oauth_version="1.0"'

вот ссылка https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update, предложенная @Gonzalo Nicolás Может кто-нибудь помочь мне с документацией или некоторыми закодированными примерами.

Ответы [ 3 ]

2 голосов
/ 08 ноября 2019

извините за мой английский, я из Аргентины. ваше решение - POST statuses / update API,
Это решение от твиттера. Если вы выполните поиск по нему, вы найдете всю документацию и структуру, которую вам нужно отправить, при условии использования ссылки auth

: https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update

1 голос
/ 15 ноября 2019

Итак, насколько я понимаю, вы можете получить доступ к API Twitter с помощью простого сервера узлов. Первоначально я думал, что это сложно, но на самом деле не о чем беспокоиться.

Вы можете запустить программу вашего узла с созданием директории проекта

mkdir server
cd server
npm init
touch server.js

, установить twit api и express jsв свой проект узла

npm install twit body-parser cors express

создайте приложение для Twitter на странице разработчиков Twitter https://apps.twitter.com/

, затем скопируйте и вставьте этот код в файл server.js, который нужно создать в своемприложение узла, которое вы можете сделать, просто создав файл с именем server.js

const express = require('express');
const Twitter = require('twit');

const app = express();
const client = new Twitter({
  consumer_key:         '...',
  consumer_secret:      '...',
  access_token:         '...',
  access_token_secret:  '...',
});


app.use(require('cors')());
app.use(require('body-parser').json());

app.post('/post_tweet', (req, res) => {

  tweet = req.body;

  client
    .post(`statuses/update`, tweet)
    .then(tweeting => {
      console.log(tweeting);

      res.send(tweeting);
    })

   .catch(error => {
    res.send(error);
  });


});

app.listen(3000, () => console.log('Server running'));

, затем в своем угловом проекте просто скопируйте и вставьте этот код, и все настроено

  tweet(tweetdata: string) {
    return this.http.post<any>(`${this.api_url}/post_tweet/`, {status: tweetdata})
        .pipe(map(tweet => {

            alert("tweet posted")

            return tweet;
        }));
}
sendTweet() {  
  this.tweet('This is app code')
            .pipe(first())
            .subscribe(
                data => {
                    console.log('yes')
                },
                error => {
                  'failed'
                });
}
1 голос
/ 13 ноября 2019

вы можете попробовать собственный скрипт твиттер-виджета для твита во временной шкале, используя следующий код: (я не пробовал это в angular / ionic, но работаю в моем html.)

// initialization : 

window.twttr = (function (d, s, id) {
    var t, js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s);
    js.id = id;
    js.src = "https://platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
    return window.twttr || (t = {
        _e: [],
        ready: function (f) {
            t._e.push(f)
        }
    });
}(document, "script", "twitter-wjs"));

// on button click, this will fire  (button will automatically generated by widget.)

twttr.ready(function (twttr) {
    twttr.widgets.createShareButton(
        'link you want to share',
        document.getElementById('twr'), {
            url: 'link that you want to share',
            count: '1',
            size: 'large'
        }).then(function (el) {
        console.log('button created');
    });
    twttr.events.bind('tweet', function (event) {
        console.log('tweet', event);
    });
});

note: Возможно, window.twttr не работает в угловом режиме, поэтому вы можете использовать window['twttr'] вместо window.twttr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...