Twitter API class wil niet meewerken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

07/08/2023 20:32:21
Quote Anchor link
Hoi luitjes. Ik weet dat Twitter een aflopende zaak is, maar toch wou ik gebruik blijven maken van de Twitter API die hier zou moeten werken (Free Plan). (voor zolang Twitter nog werkt)

Ik gebruik de TwitterOautTwitterOauth class van Abraham die ik via Composer inlaad. Ook gebruik ik de V2 van de Twitter API omdat de V1 API niet meer werkt.

Echter met onderstaande code krijg ik dit:

Quote:
400 Error: Requests with bodies must have content-type of application/json


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
require "vendor/autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

define('CONSUMER_KEY', '******');
define('CONSUMER_SECRET', '*****************');
$access_token = "************************";
$access_token_secret = "************************";

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('2');
$connected = $connection->get("account/verify_credentials");

$status = $connection->post("tweets", ["status" => "Kijken of het geautomatiseerd werkt."]);
if ($connection->getLastHttpCode() == 200) {
    echo "Gaat goed. Code 200 = OK!";
}
else {
    $code = $connection->getLastHttpCode();
    echo "HTTP-code is: " . $code;
    echo 'Error: ' . $status->errors[0]->message;
    print_r($status);
}

?>

Ik heb ook al geprobeerd om de array door json_decode() te halen, en die aan de $connection->post() te voeren, maar dat werkt ook niet. De class zegt dat hij toch echt een array verwacht?

Iemand een idee wat er mis gaat?


Update na tiental minuten:
Whoehoe! Baby steps are made!
Na hels geklooi verder zijn we een stap verder:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$status = $connection->post("tweets", ["status" => "Kijken of het geautomatiseerd werkt."],true);


Die true-parameter is de oplossing.
Maar nu heb ik geklooi met die API-key's die niet geaccepteerd worden.

Ik kwam dit tegen op internet:
API KEY -> OAUTH_CONSUMER_KEY
API_SECRET —> CONSUMER_SECRET
ACCESS_TOKEN -> OAUTH_TOKEN
ACCESS_SECRET —> OAUTH_SECRET_KEY

Dit zijn toch de key's die bedoeld worden in combinatie met het script?

Echt, what a hell! Kon Elon niet lekker bij zijn autootjes en raketjes blijven?
Gewijzigd op 07/08/2023 21:40:44 door - Ariën -
 
PHP hulp

PHP hulp

28/04/2024 10:51:48
 
Jan Koehoorn

Jan Koehoorn

09/08/2023 19:05:56
Quote Anchor link
Ik heb ooit een Twitter class moeten bouwen voor een project voor een klant, en herinner me dat dit een belangrijke was om mee te geven in de request headers:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
...
'oauth_signature_method' => 'HMAC-SHA1'
...
?>
 
- Ariën  -
Beheerder

- Ariën -

09/08/2023 19:19:05
Quote Anchor link
Dat zal denk ik wel gebeuren in de library zelf.
Inmiddels heb ik het dus opgelost met een true parameter.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$status = $connection->post("tweets", ["status" => "Kijken of het geautomatiseerd werkt."],true);


Maar moet ik nog even kijken naar die key's. Ik krijg steeds Unauthorised 403. Ome Elon wil me niet in zijn errortjes vertellen wat er fout is, dus het wordt een leuke puzzel door die inconsistente benamingen.

Maar de implementatie klopt inmiddels wel.
 
Ozzie PHP

Ozzie PHP

10/08/2023 17:40:40
Quote Anchor link
Waarschijnlijk moet je gebruikmaken van de nieuwe API, vermoedelijk zoiets als:

$connection = new X_OAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);
$connection->setApiVersion('I_LIKE_ELON');
$connected = $connection->get("verify_account/elon_rules");
 
Ad Fundum

Ad Fundum

30/11/2023 21:47:27
Quote Anchor link
- Ariën - op 07/08/2023 20:32:21:
Hoi luitjes. Ik weet dat Twitter een aflopende zaak is, maar [...]

Het is nu wel heel snel aan het aflopen. Zie deze vid op JijBuis:
https://www.youtube.com/watch?v=U_M_uvDChJQ

Omdat Musk zich aansluit bij antisemitische uitspraken keren grote adverteerders zoals Walt Disney, IBM en Apple zich af van X. Ook onze overheid en verschillende grote Nederlandse bedrijven stoppen de samenwerking met X, aldus de website wel.nl :
https://www.welingelichtekringen.nl/video/4354893/elon-musk-vreest-ondergang-x-en-scheldt-boycottende-adverteerders-uit-go-fck-yourself.html

Ik begin met X de associatie te krijgen dat het symbool 45 graden gedraaid moet en nog wat extra streepjes aan de uiteinden erbij.. wie wil hier nou graag mee geassocieerd worden?!
 
- Ariën  -
Beheerder

- Ariën -

30/11/2023 23:59:22
Quote Anchor link
Het is echt aflopende zaak met X/Twitter. Vooral nu Zuckerberg van Meta met trots aan heeft gekondigd dat Threads binnenkort naar Europa komt, waar waarschijnlijk een hoop mensen naar zullen overstappen. Verder heb je ook Mastodon en BlueSky. Dus alles lijkt zich te verspreiden over meerdere community's.

Over dit topic:

Ik heb die API van X/Twitter nooit meer goed aan de praat gekregen. Ik heb API-tokens gekregen, maar constant worden ze geweigerd. Inmiddels heb ik maar een IFTTT implementatie geregeld, waarbij je met een betaald abonnement RSS-feeds door kan sturen naar Twitter/X. Op diezelfde wijze heb ik dat ook met Mastodon gedaan, maar dan via een Webhook en een cURL-script in PHP omdat IFTTT geen Mastodon ondersteunt. Ook ben ik aan het ontdekken of dit met BlueSky kan, en dat werkt. Echter moet ik nog kijken hoe ik een 'card' aanmaak om een link in te kunnen plaatsen. Je moet flinke lappen JSON indienen om dit te kunnen doen, en voorzover ik zie nog wat handwerk doen met base64encoding van de afbeelding ofzo.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.