Avatar billede zombien Juniormester
20. juni 2013 - 20:38 Der er 6 kommentarer og
1 løsning

PHP: Få twitter feed via API 1.1

Twitter har per 12 juni, valgt at lukke ned for API 1.0, så nu sidder jeg med det problem, jeg ikke kan opfange feeds på min hjemmeside længere :/

kritisk når jeg benytter til at melde ud om driftinformationer osv.

Jeg benytter følgende kode lige p.t.

[]
<?php

function buildBaseString($baseURI, $method, $params) {
    $r = array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[] = "$key=" . rawurlencode($value);
    }
    return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth) {
    $r = 'Authorization: OAuth ';
    $values = array();
    foreach($oauth as $key=>$value)
        $values[] = "$key=\"" . rawurlencode($value) . "\"";
    $r .= implode(', ', $values);
    return $r;
}

function returnTweet(){
    $oauth_access_token        = "x";
    $oauth_access_token_secret  = "x";
    $consumer_key              = "x";
    $consumer_secret            = "x";

    $twitter_timeline          = "user_timeline";  //  mentions_timeline / user_timeline / home_timeline / retweets_of_me

    //  create request
        $request = array(
            'screen_name'      => 'Allan_Eriksen',
            'count'            => '3'
        );

    $oauth = array(
        'oauth_consumer_key'        => $consumer_key,
        'oauth_nonce'              => time(),
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_token'              => $oauth_access_token,
        'oauth_timestamp'          => time(),
        'oauth_version'            => '1.0'
    );

    //  merge request and oauth to one array
        $oauth = array_merge($oauth, $request);

    //  do some magic
        $base_info              = buildBaseString("https://api.twitter.com/1.1/statuses/$twitter_timeline.json", 'GET', $oauth);
        $composite_key          = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
        $oauth_signature            = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
        $oauth['oauth_signature']  = $oauth_signature;

    //  make request
        $header = array(buildAuthorizationHeader($oauth), 'Expect:');
        $options = array( CURLOPT_HTTPHEADER => $header,
                          CURLOPT_HEADER => false,
                          CURLOPT_URL => "https://api.twitter.com/1.1/statuses/$twitter_timeline.json?". http_build_query($request),
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_SSL_VERIFYPEER => false);

        $feed = curl_init();
        curl_setopt_array($feed, $options);
        $json = curl_exec($feed);
        curl_close($feed);

    return json_decode($json, true);
}

echo returnTweet();

?>[/i]

Det eneste den skriver ud er Array, så tvivler på jeg kommer igennem til min twitter applikation, der må være andre end mig som bøvler løs med denne implantering af Twitter API 1.1

håber nogle derude kan hjælpe
Avatar billede jakobdo Ekspert
20. juni 2013 - 22:13 #1
Prøv at print "Array" via var_dump() eller print_r() og se om Array rent faktisk indeholder data.
Avatar billede zombien Juniormester
21. juni 2013 - 14:16 #2
Jeg kan se den har indhold via print_r(returnTweet());

men så er det lige hvordan jeg opfanger det, så jeg kan lave det om til variabler :/

Her er et eksempel på hvad jeg får ud

Array ( [0] => Array ( [created_at] => Tue Jun 18 09:57:32 +0000 2013 [id] => 3.469296673679E+17 [id_str] => 346929667367895040 [text] => æ ø Ã¥ --- Æ Ø Ã...

Og er jo kun created_at og text jeg vil have fat i
Avatar billede jakobdo Ekspert
21. juni 2013 - 14:39 #3
Du kan måske gøre:

$tweets = returnTweet();

foreach($tweets as $tweet){
echo $tweet['created_at'] . '<br />';
echo $tweet['text'] . '<hr />';
}
Avatar billede zombien Juniormester
21. juni 2013 - 14:48 #4
Jamen for dælen da :D så er der lidt at arbejde med igen...

jeg siger rigtig mange tak for hjælpen, hvis du smider et svar får du da lidt points på kontoen :D
Avatar billede jakobdo Ekspert
21. juni 2013 - 14:50 #5
Svar!
Avatar billede zombien Juniormester
21. juni 2013 - 14:51 #6
dog lige hurtig

den udskriver jo "Tue Jun 18 09:57:32 +0000 2013"
er der ikke en måde at forvandle den lidt på via en DATE()

strtotime(date("Y-m-d H:i:s"),$tweet['created_at'])
Avatar billede jakobdo Ekspert
21. juni 2013 - 15:46 #7
Tror netop du kan bruge strtotime()
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester