Вопросы по использованию API Twitter - Oauth в php

недавно я прочитал хороший учебник как аутентифицировать пользователей с помощью Twitter OAuth даже он написан до изменения формата twitter ID, но он также работает с новым форматом Twitter ID.

у меня есть несколько вопросов , Поясните, пожалуйста, если кто-то сделал это успешно..

  • почему мы всегда называем два метода getRequestToken и getAccessToken ? Тут access token и access token secret ? но оба уже приведены на странице ниже...

    http://dev.twitter.com/apps/{your_app_id} / my_token.

    что именно нужно запрос-маркер и запрос маркера секрет?? хотя я замечаю, что оба токена приходят по-разному каждый раз, когда мы обрабатываем.

  • если мы обновляем наш статус ниже метод

    $connection->post( 'statuses/update', array('status' => 'some message got from text area value' );

тогда как мы можем проверить, что статус был успешно обновлен?? Это означает, что если я хочу отобразить предупреждающее сообщение post has been sent successfully, как это реализовать на нашей странице PHP??

  • какой URL обратного вызова важен, т. е. где на самом деле пользователь перемещается после публикации или выполнения вещей в twitter?

    1. это URL Registered OAuth Callback URL который написан во время разработки приложения на

      http://dev.twitter.com/apps/{id_no}
      или

    2. это URL, который определено в нашем php коде (config.php) как

      define('OAUTH_CALLBACK', 'http://www.xyz.com');

    еще один вопрос-Эн -

  • как обрабатывать запретить доступ приложений?
    Примечание: пожалуйста, см. Мой вопрос такой

обновление для @Thai

я сделал ниже в соответствии с вашим предложением

$user_info = $connection->get('account/verify_credentials');
$status_info =$connection->get('statuses/show/', array('id' =>32320907720523776) );

echo "<pre>";
print_r($status_info);

echo "</pre> Content : <pre>";
print_r($user_info);

возвращает ниже

stdClass Object
(
    [request] => /1/statuses/show.json?id=3.2320907720524E%2B16&oauth_consumer_key=jashak..&oauth_nonce=bec...&oauth_signature=%2FMj%2B0Z7oyYNKdMn%2B%2FOJ6Ba8ccfo%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1296541384&oauth_token=223961574-cW4...&oauth_version=1.0a
    [error] => No status found with that ID.
)

Примечание: скрыть oauth_consumer key,oauth_nonce и oauth_token в целях безопасности ;)

Content:
stdClass Object
(
    [follow_request_sent] => 
    [profile_link_color] => 038543
    [profile_image_url] => http://a3.twimg.com/profile_images/1215444646/minialist-photography-9_normal.jpg
    [contributors_enabled] => 
    [favourites_count] => 31
    [profile_sidebar_border_color] => EEEEEE
    [id_str] => 223961574 // this is also id_str
    [status] => stdClass Object
        (
            [retweeted] => 
            [id_str] => 32320907720523776 // this id_str i used
            [in_reply_to_status_id_str] => 
            [geo] => 
            [contributors] => 
            [source] => Black Noise
            [in_reply_to_user_id_str] => 
            [retweet_count] => 0
            [truncated] => 
            [coordinates] => 
            [created_at] => Tue Feb 01 06:14:39 +0000 2011
            [favorited] => 
            [text] => Twitter test: verify that status has been updated
            [place] => 
            [in_reply_to_screen_name] => 
            [in_reply_to_status_id] => 
            [id] => 3.2320907720524E+16
            [in_reply_to_user_id] => 
        )
   [screen_name] => ltweetl
   [profile_use_background_image] => 1
   ....
   ...

я получил ошибку No status found with that ID и что id_str у р отметить??

3 ответов


этот ответ не предназначен специально для API Twitter-OAuth Авраама, но применяется к API OAuth Twitter в целом.

  1. эта страница дает только код маркер доступа и секрет маркера доступа к свой приложения. Это нормально, если вам не нужно, чтобы ваше приложение было аутентифицировано как любые другие пользователи, поэтому нет необходимости запрашивать токены запроса и не нужно обменивать токен запроса на токен доступа, вы просто используете свой доступ токен

    однако, если вы хотите аутентифицироваться как другие пользователи, вам придется пройти все необходимые шаги, что объясняется вкратце здесь:

    • запрос запрос маркер. Он используется только для входа в систему и не может использоваться для доступа к данным пользователя. Вы получите токен запроса и секрет токена запроса. При запросе токена запроса,вы можете указать URL обратного вызова какой Twitter будет отправлять ваших пользователей, когда это аутентификация прошла успешно.
    • вам нужно сохранить токен запроса и секрет до тех пор, пока аутентификация не будет выполнена.
    • после этого вы перенаправляете пользователя на http://api.twitter.com/oauth/authorize?oauth_token= за ним следует токен OAuth.
    • после того, как пользователь вошел в Twitter и разрешил ваше приложение, Twitter отправляет пользователя обратно на URL обратного вызова.
    • вы обмениваете токен запроса на токен доступа, а затем можете отказаться от токена запроса, потому что он вам не понадобится больше.

    вы можете сохранить токен доступа до тех пор, пока он вам нужен. Если вы не сохраните маркер доступа, вам нужно будет запросить маркер запроса и снова обменять его на маркер доступа, и ваши пользователи должны будут снова войти в систему.

    таким образом, в основном, если вы создаете что-то, что пользователь должен войти в систему с помощью Twitter, вам нужно сделать все шаги выше, чтобы получить вход пользователя. Если вы просто используете API Twitter для себя, вам не нужно шаг аутентификации. используйте маркер доступа.

  2. Вы можете проверьте идентификатор твита, путем проверки id_str клавиша на возвращаемом ответе.

    Если статус не опубликован, Twitter вернет объект ошибки.

  3. Вы можете указать по умолчанию обратный вызов OAuth на странице настроек приложения, который будет использоваться, если вы явно не укажете обратный звонок.

    это необходимо, потому что если вы как-то забыли или не указали URL обратного вызова, Twitter все равно будет знать, куда перенаправлять ваших пользователей.

    однако Twitter поощряет это вы должны явно указать URL обратного вызова. Есть много преимуществ от использования URL обратного вызова, например, возможность указать любые URL-адреса в качестве обратного вызова. Я использовал это, потому что мой клиент Twitter работает на двух разных доменах, я мог бы перенаправить пользователи возвращаются в нужное место.


потому что мы получаем AccessToken и секрет токена доступа только после проверки пользователя с помощью verifier .

верификатор является наиболее важным в процессе OAuth.Поэтому нам нужно отправить один запрос для генерации AccessToken и секрет маркера доступа .

после получения AccessToken и Access Token Secret мы можем использовать его в течение времени, указанного пользователем, позволяя вашему приложению Twitter разрешить доступ к его информации.это может быть 1 день ,1 месяц, как мудрый в LInkedin OAuth после этого время истечения срока действия секрета AccessToken и маркера доступа.........


что вы получаете, когда вы делаете:

$temp = $connection->post( 'statuses/update', array('status' => 'some message got from textarea value' );
print_r($temp);

Я бы предположил, что будет хранить ответ (в формате json/xml) в $temp var. (Чтобы проверить ответы twitter, вы можете проверить http://dev.twitter.com/console)

url обратного вызова, определенный в config.php определит, куда он будет перенаправлен. Это связано с тем, что этот параметр обратного вызова был недавно добавлен в API twitter. До этого вы могли только определить url обратного вызова в App management раздел twitter.com, этот URL-адрес является url-адресом По умолчанию, если другой url-адрес не определен.