[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • Twitter-Modul - (Basic Auth nicht mehr supported)
Seite 1 von 2

Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 8. Okt 2010, 09:33
von lci
Hallo,

ich benutze das Twitter Modul aus dem DL Bereich:
http://www.redaxo.de/165-0-moduldetails ... ule_id=473

Leider funktioniert es nicht mehr, da Twitter seine API wohl geändert hat,
von Basic Authzu OAuth. Leider kenne ich mich nicht so gut aus und weiss nicht welche Anpassungen ich vornehmen muss damit es wieder funktiert...

Die im Modul angegebene twitter.class.php von Google Code ist auch geupdated worden (glaube ich) - zumindest ist in dem Download jetzt ein OAuth.php File dabei.

http://code.google.com/p/twitter-php/wi ... loads?tm=2

Hat das schon jemand umgestellt?

Tscheuss & Viele Dank
P.

Twitter Auth

Verfasst: 15. Okt 2010, 13:41
von tty35
ich habs mal probiert,
bei Twitter meine Test Redaxo Seite als App angemeldet und consumer_key,secrets und Token erhalten.
Dann im addon pfad twitteroauth.php (von Abraham Williams) und OAuth.php in ein Verzeichnis kopiert (tw).

Test Ausgabe Modul hingefriggelt, nicht schön aber funzt ;-)

Code: Alles auswählen

<?php

define('CONSUMER_KEY', '*************************');
define('CONSUMER_SECRET', '************************************************');
define('ACCESS_TOKEN', '***********************************************************');
define('ACCESS_TOKEN_SECRET', '****************************************');

//require '/include/twitteroauth.php';
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitteroauth.php');


$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);


// alle tweets per rss ausgeben
$connection->format = 'atom';

echo '<pre>';
echo $connection->get('statuses/home_timeline', array('count'=>2));
echo '</pre>';

?>
Grüße tty

Verfasst: 15. Okt 2010, 15:29
von lci
vielen Dank! Probiere ich gleich mal aus!

Verfasst: 15. Okt 2010, 20:46
von tty35
habe noch mal ne andere twitter.class ausprobiert, jetzt ist das Erscheinungsbild schon ansprechender.
Melde mich nach dem we.

Grüße tty

Verfasst: 16. Okt 2010, 12:26
von tty35
Benutze jetzt die twitter.class.php von David Grudl.
Benötigt werden twitter.class.php und OAuth.php.
Ich habe die Datein in ein Verzeichnis tw im addon pfad kopiert.
Quelle: phpfashion.com/twitter-for-php

Twitter load Modul - es werden die letzten 20 tweets angezeigt.

Modul Eingabe

Code: Alles auswählen

<h2>OAuth für Twitter</h2>
Consumer key&nbsp;<input type="text" size="100" name="VALUE[6]" value="REX_VALUE[id="6" ifempty="Bitte eintragen"]" /><br />
Consumer secret&nbsp;<input type="text" size="100" name="VALUE[7]" value="REX_VALUE[id="7" ifempty="Bitte eintragen"]" /><br />
Access Token&nbsp;<input type="text" size="100" name="VALUE[8]" value="REX_VALUE[id="8" ifempty="Bitte eintragen"]" /><br />
Access Token Secret&nbsp;<input type="text" size="100" name="VALUE[9]" value="REX_VALUE[id="9" ifempty="Bitte eintragen"]" /><br />[/quote]
Modul Ausgabe 
[quote]<?php

require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');

// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';

Twitter::$cacheDir($REX['INCLUDE_PATH']. '/addons/tw/');



// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');

// Nur meinen Channel anzeigen 
$channel = $twitter->load(Twitter::ME);

// $channel = $twitter->load(Twitter::ME_AND_FRIENDS);
// $channel = $twitter->load(Twitter::REPLIES);


?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<ul>
<?foreach ($channel->status as $status): ?>
	<li><a href="http://twitter.com/<?=$status->user->screen_name?>"><img src="<?=$status->user->profile_image_url?>"> <?=$status->user->name?></a>:
	<?=$status->text?>
	<small>at <?=date("j.n.Y H:i", strtotime($status->created_at))?></small>
	</li>
<?endforeach?>
</ul>
[/quote]


Die Anzahl der tweets sind in der twitter.class.php Zeile 120 ($count = 20) festgelegt.
Wie man die Variable per Eingabe Modul anspricht  müsste sich mal jemand mit Ahnung ansehen.

tty
 :lol:

Verfasst: 21. Okt 2010, 12:13
von Peter.Bickel
Vielen Dank für die prima Anleitung.

Ich hab allerdings im Moment noch folgenden Fehler, wo ich die Urdache nicht finden kann:

Code: Alles auswählen

Fatal error: Function name must be a string in .../redaxo/include/classes/class.rex_article_base.inc.php(354) : eval()'d code on line 59
Irgendeine Idee?

Danke,
Peter.

Verfasst: 21. Okt 2010, 19:06
von tty35
Bei mir funktioniert´s unter Redaxo 4.2.1
PHP >5 und CURL erforderlich.

Die benötigte twitter.class.php und OAuth.php hab ich im redaxo/include/addons/tw Verzeichnis mit 740 Rechten hinterlegt.
Vielleicht sind sie im files Verzeichnis besser aufgehoben.

Beispiel Twitter search (D.Grudl) benötigt keine Twitter keys

Code: Alles auswählen

<?php
//require_once '../twitter.class.php';
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
$twitter = new Twitter;

$results = $twitter->search('#nette');

?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<ul>
<?foreach ($results as $result): ?>
	<li><a href="http://twitter.com/<?=$result->from_user?>"><img src="<?=$result->profile_image_url?>" width="48"> <?=$result->from_user?></a>:
	<?=$result->text?>
	<small>at <?=date("j.n.Y H:i", strtotime($result->created_at))?></small>
	</li>
<?endforeach?>
</ul>
[/quote]


Die eigene Twitter App unter http://dev.twitter.com/apps registrieren, nur da habe ich alle benötigten key´s , token und secrets gefunden.

Hoffe es hilft 

viele Grüße tty

Verfasst: 21. Okt 2010, 22:59
von Peter.Bickel
Vielen Dank für die Hinweise.
Hatte alles so gemacht wie beschrieben. PHP-Version passt, Curl auch da.
Verzeichnisse passen, hatte es aber auch schon mal im files-Ordner ausprobiert.
Twitter Search klappt, aber das andere Beispiel nicht.
Die Keys müssten auch alle korrekt sein.
Seltsam.

Die "Application Name" und "Application Website" in Twitter sind nicht von Relevanz, oder?

Werde mich die nächsten Tage nochmal in die Sache vertiefen und gebe Bescheid, enn ich was gefunden habe.

Danke erstmal,
Peter.

Verfasst: 22. Okt 2010, 08:07
von Peter.Bickel
Verwende jetzt das hier:
http://code.google.com/p/twitterjs/

Das klappt prima.

Schöne Grüße,
Peter.

Verfasst: 22. Okt 2010, 17:28
von tty35
Bei den Twitter Settings ist nur die Registered Callback URL wichtig.
Wenn die Twitter Search läuft, kann es eigentlich nur an der Key Übergabe liegen - würde auch zur Fehlermeldung passen, da sie als string übergeben werden. Hab ich da vielleicht beim copy und paste ein ' vergessen ?
Neuer Versuch - Modul Eingabe:

Code: Alles auswählen

<h2>OAuth für Twitter</h2>
Consumer key&nbsp;<input type="text" size="100" name="VALUE[6]" value="REX_VALUE[6]" /><br />
Consumer secret&nbsp;<input type="text" size="100" name="VALUE[7]" value="REX_VALUE[7]" /><br />
Access Token&nbsp;<input type="text" size="100" name="VALUE[8]" value="REX_VALUE[8]" /><br />
Access Token Secret&nbsp;<input type="text" size="100" name="VALUE[9]" value="REX_VALUE[9]" /><br />
Modul Ausgabe:

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$channel = $twitter->load(Twitter::ME);
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<ul>
<?foreach ($channel->status as $status): ?>
	<li><a href="http://twitter.com/<?=$status->user->screen_name?>"><img src="<?=$status->user->profile_image_url?>"> <?=$status->user->name?></a>:
	<?=$status->text?>
	
	</li>
<?endforeach?>
</ul>
Viele Grüße
tty

Verfasst: 24. Okt 2010, 15:21
von Peter.Bickel
Nochmal probiert, jetzt klappt es. danke. Muss an der Callback URL gelegen haben, dirt hatte sich die Eisntellung auf Client statt Browser verstellt.

Danke!
Peter.

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 20:31
von PAGEJUMPER
Hallo zusammen,

wie bekomme ich es hin, das Umlaute etc. richtig angezeigt werden? Ich selbst verwende mit Redaxo iso-8859-1.

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$channel = $twitter->load(Twitter::ME);
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<ul>
<?foreach ($channel->status as $status): ?>
   <li><a href="http://twitter.com/<?=$status->user->screen_name?>"><img src="<?=$status->user->profile_image_url?>"> <?=$status->user->name?></a>:
   <?=$status->text?>  <br><?php echo date("j.n.Y H:i", strtotime($status->created_at)) ?>
   
   </li>
<?endforeach?>
</ul>

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 21:05
von Peter.Bickel
Wahrscheinlich reicht es schon, wenn Du den Charset von UTF-8 auf ISO umstellst.

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 21:13
von PAGEJUMPER
Hallo Peter,

leider nicht, der zeigt dennoch nur Blödsinn bei den Umlauten an.

Viele Grüße.

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 21:50
von Peter.Bickel
In Zeile 94 der Twitterklasse findest Du mehr Infos:
https://github.com/dg/twitter-php/blob/ ... .class.php
Ich würde mal versuchen, dort Deine ISO-Variante einzustellen.
Schlimmstenfalls könnte man das Ganze noch durch ein utf8_decode jagen.

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 22:17
von PAGEJUMPER
Hey Peter,

danke, aber macht der auch nicht.

Sorry das ich frage, aber was müsste denn dann wo bei dem utf8_decode stehen?
Hab davon leider keine Ahnung.

Viele Grüße,
Ronny

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 22:24
von Peter.Bickel
Die Textausgabe findet ja in $status->text statt, glaub ich.
Dann wäre das utf8_decode($status->text)

Hier:
http://php.net/manual/de/function.utf8-decode.php

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 22:47
von PAGEJUMPER
Danke Peter, funktioniert super.

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 23:22
von PAGEJUMPER
Hallo Peter,

hast du vielleicht noch eine Idee wie man den Code so anpasst, dass nur die 5 aktuellsten angezeigt werden? Hab schon probiert, aber es scheint klappt nicht :(

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$channel = $twitter->load(Twitter::ME);
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
<ul>
<?foreach ($channel->status as $status): ?>    
   <li><?php echo utf8_decode($status->text) ?><br><?php echo date("d.m.Y - H:i", strtotime($status->created_at)) ?> Uhr</li>
   
   

<?endforeach?>
</ul>

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 23:36
von Peter.Bickel
Hallo Ronny,

ich dachte, Du programmierst auch ein bissel? ;-)

Du könntest es z.B. so in der Art machen:

Code: Alles auswählen

$max = 5;
foreach ($channel->status as $status) { 	
	if ($max > 0) {
		... ausgabe ...
		$max--;
	}
}

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 23:41
von PAGEJUMPER
Hallo Peter,

ja, aber irgendwie stehe ich auf dem Schlauch. Das hatte ich auch schon eingefügt, dennoch kommt nur misst dabei raus.

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$channel = $twitter->load(Twitter::ME);
$max = 5;
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
<ul>

<?php foreach ($channel->status as $status) {    
   if ($max > 0) {   
   "<li><?php echo utf8_decode($status->text) ?><br><?php echo date("d.m.Y - H:i", strtotime($status->created_at)) ?> Uhr</li>"
   
          $max--;
   }
}?>

<?endforeach?>
</ul>

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 2. Mär 2012, 23:47
von Peter.Bickel
Was für Mist? Du musst schon genauere Infos geben ...

Wenn das Dein Code ist, kann das ja nicht innerhalb geöffneter PHP-Tags funktionieren:
"<li><?php echo utf8_decode($status->text) ?><br><?php echo date("d.m.Y - H:i", strtotime($status->created_at)) ?> Uhr</li>"

Und das Meta <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ist vermutlich auch unsinnig,weil Du Dich hier nicht innerhalb des Headers befindest, oder?

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 3. Mär 2012, 00:02
von PAGEJUMPER
Jetzt funzt es :)

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 16. Mär 2014, 17:36
von Floody
Moin,

leider bekomme ich hier keine Ausgabe...

Folgendes habe ich gemacht:

Modul angelegt:

Input:

Code: Alles auswählen

<h2>OAuth für Twitter</h2>
Consumer key&nbsp;<input type="text" size="100" name="VALUE[6]" value="REX_VALUE[6]" /><br />
Consumer secret&nbsp;<input type="text" size="100" name="VALUE[7]" value="REX_VALUE[7]" /><br />
Access Token&nbsp;<input type="text" size="100" name="VALUE[8]" value="REX_VALUE[8]" /><br />
Access Token Secret&nbsp;<input type="text" size="100" name="VALUE[9]" value="REX_VALUE[9]" /><br />
Output:

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$channel = $twitter->load(Twitter::ME);
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<ul>
<?foreach ($channel->status as $status): ?>
   <li><a href="http://twitter.com/<?=$status->user->screen_name?>"><img src="<?=$status->user->profile_image_url?>"> <?=$status->user->name?></a>:
   <?=$status->text?>
   
   </li>
<?endforeach?>
</ul>
In den Ordner redaxo/include/addons/tw die Datein twitter.class.php und OAuth.php aus dem Link phpfashion.com/twitter-for-php kopiert und die Rechte 777 vergeben.

Bei Twitter eine App angemeldet und unter Input folgende Werte angegeben:

Consumer key
Consumer secret
Access Token
Access Token Secret

Jedoch bekomme ich keine Fehlermeldung aber auch keine Tweets...
Woran kann das liegen?

System:
REDAXO: 4.5.1
PHP: 5.4.26

Danke schon einmal im Voraus...

Ps. Kann es an der Einstellung bei Twitter unter: Callback URL liegen? Was muss ich hier eintragen?

Re: Twitter-Modul - (Basic Auth nicht mehr supported)

Verfasst: 16. Mär 2014, 18:24
von Floody
Erledigt...

In der Ausgabe hatten sich ein paar kleine Dinge geändert.

Code: Alles auswählen

<?php
require_once($REX['INCLUDE_PATH']. '/addons/tw/twitter.class.php');
// enables caching (path must exists and must be writable!)
// Twitter::$cacheDir = dirname(__FILE__) . '/temp';
Twitter::$cacheDir = ($REX['INCLUDE_PATH']. '/addons/tw/');
// ENTER HERE YOUR CREDENTIALS (see readme.txt)
$twitter = new Twitter ('REX_VALUE[6]', 'REX_VALUE[7]', 'REX_VALUE[8]', 'REX_VALUE[9]');
$statuses = $twitter->load(Twitter::ME);
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<ul>
<?php foreach ($statuses as $status): ?>
    <li><a href="http://twitter.com/<?= $status->user->screen_name ?>">
        <?= htmlspecialchars($status->user->name) ?></a>:

        <?= Twitter::clickable($status) ?>

        <small>at <?= date("j.n.Y H:m", strtotime($status->created_at)) ?></small>
    </li>
<?php endforeach ?>
</ul>
Mit dieser Ausgabe funktioniert nun alles wieder.