Ionic4/Angular Post a tweet to Twitter

sorry for my english, i'm from argentina. your solution is POST statuses/update API,
This solution is from twitter, If you search on that, you will find all the documentation and structure that you have to send assuming you use auth

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


So as far as I understand this, you can access the Twitter API with a simple node server. Which originally I thought was daunting but really it is not anything to stress about.

you can start your node program with creating a project directory

mkdir server
cd server
npm init
touch server.js

and install the twit api and express js into your node project

npm install twit body-parser cors express

create your twitter app on the twitter developers page https://apps.twitter.com/

then copy and paste this code into your server.js file which you need to create in your node application, which you can do simply by creating a file called 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'));

then in your angular project just copy and paste this code and you are all set

api_url = 'http://localhost:3000';

  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'
                });
}

you can try native twitter widget script for tweet in timeline using following code : (I didn't try it in angular/ionic, but working in my 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 : Maybe window.twttr not working in angular so you can use window['twttr'] instead of window.twttr variable.