Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ionic4/Angular Post a tweet to Twitter

I am developing an APP where I would like a user to tap a button and send a tweet to his/her timeline. There are a few known methods of how to do this with Node.JS and Angular, but I am looking for a solution to achieve what I want without a Node Server Running.

Is there a way to embed the Twitter API into your IONIC/Angular APP. and I am not looking for the Ionic Plugin TwitterConnect as that does not have a POST Method.

EDIT

here is the twitter example, but how would I implement this in 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"'

here is the link https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update suggested by @Gonzalo Nicolás Can anyone assist me with documentation or some coded examples.

like image 885
Mitchell Yuen Avatar asked Nov 08 '19 13:11

Mitchell Yuen


2 Answers

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

like image 90
Gonzalo Nicolás Avatar answered Oct 11 '22 04:10

Gonzalo Nicolás


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'
                });
}
like image 25
Mitchell Yuen Avatar answered Oct 11 '22 05:10

Mitchell Yuen