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.