最新の Twitter API を使用して Twitter ウィジェットをデザインする

PHPz
リリース: 2023-09-04 16:13:01
オリジナル
873 人が閲覧しました

Twitter は API バージョン 1.1 の公開にあたり、いくつかの変更を加えています。最も重要な変更の 1 つは、認証の導入です。つまり、API にリクエストを送信するにはアプリケーションを認証する必要があります。

認証は OAuth を利用しています。OAuth は、シンプルで標準的な方法で安全な認証を可能にし、ユーザーの承認を可能にするオープン プロトコルです。 パスワードを共有せずに代理として申請します。

このチュートリアルでは、Twitter ユーザーが投稿した最新のツイートのリストを表示する Twitter タイムライン WordPress ウィジェットを開発しながら、プログラムで Twitter の API を操作する方法を学びます。

これは、このチュートリアルの最後に作成する Twitter タイムライン ウィジェットのプレビューです。

利用最新的 Twitter API 设计 Twitter 小部件

Twitter API にリクエストを正常に送信するには、 未承認のリクエストが拒否されないため、OAuth 認証を備えたアプリ 許可する。

Twitter アプリケーションを作成するには、Twitter にログインする必要があります Twitter アカウントの開発者ダッシュボードを使用します。作成のポイント アプリケーションは単に自分 (および Twitter) にキーのセットを与えるだけです。

これらには以下が含まれます:

  • コンシューマキー
  • 消費者の秘密
  • ###アクセストークン###
  • アクセストークンシークレット
  • 以下の手順に従って Twitter アプリケーションを作成し、キーを生成します。

Twitter アカウントを使用して Twitter 開発者アカウントにログインし、アプリケーション管理コンソールに移動します。
  • Create New App
  • 」ボタンをクリックして、Twitter アプリケーションの作成を開始します。 フォームに記入し、送信ボタンをクリックしてアプリケーションを作成します。
  • アプリをクリックし、
  • 権限
  • タブに移動し、アクセス レベルを 読み取りおよび書き込みに変更します。 この API を正しく使用するために何らかの操作を実行したい場合は、次のように変更する必要があります。 以下以外のことを行っている場合は、設定を read and write

    に設定してください。 GET リクエストを使用した標準的なデータ取得。

    利用最新的 Twitter API 设计 Twitter 小部件

  • アプリケーション コンシューマ キーとシークレットを取得するには、
API キー

タブに移動します。 API キーと API シークレットは、それぞれユーザー キーとユーザー シークレットです。

利用最新的 Twitter API 设计 Twitter 小部件

アプリケーション アクセス トークンとアクセス トークン シークレットを取得するには、[API キー]

タブで下にスクロールし、[マイ アクセス トークンの作成] ボタンをクリックして作成します。アクセストークン。 strong>

利用最新的 Twitter API 设计 Twitter 小部件 ページを更新すると、アプリケーション アクセス トークンが表示されます。

############私たち これで、コンシューマ キーとシークレット、およびアクセス トークンとシークレット キーが手に入りました。これらの OAuth 資格情報は、API にリクエストを行うときに Twitter によって認証されます。

私たちがコーディングしている Twitter タイムライン ウィジェットのウィジェット設定には、これらの OAuth 認証情報を収集し、ウィジェットで再利用できるようにデータベースに保存するフォーム フィールドが含まれます。

利用最新的 Twitter API 设计 Twitter 小部件Twitter タイムライン ウィジェット プラグインのコーディングを始めましょう。

Twitter タイムライン ウィジェットの開発

タイトルは プラグイン ファイルに最初に入るのはプラグイン ヘッダーです。

うわー

親クラス

WP_Widget

を拡張するクラスを作成します。

リーリー

__construct()

マジック メソッドを使用して、ウィジェットの名前と説明を指定します。

リーリー

以下の form() メソッドは、ウィジェット設定フォームを作成します。これにより、後でウィジェットで再利用できるように、OAuth 資格情報がデータベースに保存されます。

リーリー

以下は、上記の form() メソッドによって作成されたウィジェット設定のスクリーンショットです。

設定フォームのフィールドに値を入力した場合は、データベースに保存する必要があります。 update()

メソッドは、悪意のあるデータを削除することでウィジェット フォームの値をクリーンアップし、クリーンアップされたデータをデータベースに保存します。
利用最新的 Twitter API 设计 Twitter 小部件
リーリー

Twitter API 用の非常に便利なシンプルな PHP ラッパーを見つけました。これにより、ウィジェットが使用する API へのリクエストの送信と API からのレスポンスの受信が簡単になります。 GitHub リポジトリから zip アーカイブ内の PHP ラッパーをダウンロードし、ラッパー クラスを含む

TwitterAPIExchange.php

ファイルを抽出してインクルードします。

下面的 twitter_timeline() 方法接受以下参数作为其参数,这在向 Twitter API 发出请求时会派上用场。

  1. $username: Twitter 用户名

  2. $limit: 小部件要显示的推文数量

  3. $oauth_access_token: Twitter 应用程序 OAuth 访问令牌。

  4. $oauth_access_token_secret: 应用程序 OAuth 访问令牌 秘密。

  5. $consumer_key: Twitter 应用程序消费者密钥。

  6. $consumer_secret: 应用程序消费者秘密。

public function twitter_timeline( $username, $limit, $oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret ) {
    require_once 'TwitterAPIExchange.php';

    /** Set access tokens here - see: https://dev.twitter.com/apps/ */
    $settings = array(
        'oauth_access_token'        => $oauth_access_token,
        'oauth_access_token_secret' => $oauth_access_token_secret,
        'consumer_key'              => $consumer_key,
        'consumer_secret'           => $consumer_secret
    );

    $url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
    $getfield = '?screen_name=' . $username . '&count=' . $limit;
    $request_method = 'GET';
    
    $twitter_instance = new TwitterAPIExchange( $settings );
    
    $query = $twitter_instance
        ->setGetfield( $getfield )
        ->buildOauth( $url, $request_method )
        ->performRequest();
    
    $timeline = json_decode($query);

    return $timeline;
}
ログイン後にコピー

该方法使用 PHP Wrapper for Twitter API 向 Twitter API 发送请求,保存并返回响应(用户时间线的 JSON 数据)。

创建或制作推文的时间由 API 以英文文本日期时间保存。例如。 星期四 6 月 26 日 08:47:24 +0000 2014

为了使推文时间更加用户友好,我创建了方法 tweet_time(),它通过以下方式显示时间。

  • 如果时间少于三秒,则返回现在。
  • 不到一分钟,返回x秒前。
  • 不到两分钟,返回大约 1 分钟前。
  • 不到一小时,n 分钟前返回,依此类推。

这是 tweet_time() 方法的代码。

public function tweet_time( $time ) {
    // Get current timestamp.
    $now = strtotime( 'now' );

    // Get timestamp when tweet created.
    $created = strtotime( $time );

    // Get difference.
    $difference = $now - $created;

    // Calculate different time values.
    $minute = 60;
    $hour = $minute * 60;
    $day = $hour * 24;
    $week = $day * 7;

    if ( is_numeric( $difference ) && $difference > 0 ) {

        // If less than 3 seconds.
        if ( $difference < 3 ) {
            return __( 'right now', 'twitter_tweets_widget' );
        }

        // If less than minute.
        if ( $difference < $minute ) {
            return floor( $difference ) . ' ' . __( 'seconds ago', 'twitter_tweets_widget' );;
        }

        // If less than 2 minutes.
        if ( $difference < $minute * 2 ) {
            return __( 'about 1 minute ago', 'twitter_tweets_widget' );
        }

        // If less than hour.
        if ( $difference < $hour ) {
            return floor( $difference / $minute ) . ' ' . __( 'minutes ago', 'twitter_tweets_widget' );
        }

        // If less than 2 hours.
        if ( $difference < $hour * 2 ) {
            return __( 'about 1 hour ago', 'twitter_tweets_widget' );
        }

        // If less than day.
        if ( $difference < $day ) {
            return floor( $difference / $hour ) . ' ' . __( 'hours ago', 'twitter_tweets_widget' );
        }

        // If more than day, but less than 2 days.
        if ( $difference > $day && $difference < $day * 2 ) {
            return __( 'yesterday', 'twitter_tweets_widget' );;
        }

        // If less than year.
        if ( $difference < $day * 365 ) {
            return floor( $difference / $day ) . ' ' . __( 'days ago', 'twitter_tweets_widget' );
        }

        // Else return more than a year.
        return __( 'over a year ago', 'twitter_tweets_widget' );
    }
}
ログイン後にコピー

接下来是 widget() 方法,用于在 WordPress 前端显示 Twitter 时间线。

public function widget( $args, $instance ) {
    $title                     = apply_filters( 'widget_title', $instance['title'] );
    $username                  = $instance['twitter_username'];
    $limit                     = $instance['update_count'];
    $oauth_access_token        = $instance['oauth_access_token'];
    $oauth_access_token_secret = $instance['oauth_access_token_secret'];
    $consumer_key              = $instance['consumer_key'];
    $consumer_secret           = $instance['consumer_secret'];

    echo $args['before_widget'];

    if ( ! empty( $title ) ) {
        echo $args['before_title'] . $title . $args['after_title'];
    }

    // Get the tweets.
    $timelines = $this->twitter_timeline( $username, $limit, $oauth_access_token, $oauth_access_token_secret, $consumer_key, $consumer_secret );

    if ( $timelines ) {

        // Add links to URL and username mention in tweets.
        $patterns = array( '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '/@([A-Za-z0-9_]{1,15})/' );
        $replace = array( '<a href="$1">$1</a>', '<a href="http://twitter.com/$1">@$1</a>' );

        foreach ( $timelines as $timeline ) {
            $result = preg_replace( $patterns, $replace, $timeline->text );

            echo '<div>';
                echo $result . '<br/>';
                echo $this->tweet_time( $timeline->created_at );
            echo '</div>';
            echo '<br/>';
        }

    } else {
        _e( 'Error fetching feeds. Please verify the Twitter settings in the widget.', 'twitter_tweets_widget' );
    }

    echo $args['after_widget'];
}
ログイン後にコピー

小部件类 Twitter_Tweets_Widget 最终使用 widgets_init 挂钩注册,因此 WordPress 可以识别它。使用结束语 } 结束您的课程,然后添加以下代码来初始化

function register_twitter_widget() {
    register_widget( 'Twitter_Tweets_Widget' );
}

add_action( 'widgets_init', 'register_twitter_widget' );
ログイン後にコピー

最后,我们完成了 Twitter 时间轴小部件的编码。

摘要

在本文中,我们学习了如何在实际项目中使用 Twitter API 来构建我们自己的 Twitter 时间线 WordPress 小部件。尽管本教程应该相对简单,但我们涵盖了 OAuth、密钥等主题,以及其他对于使用 API 的人员来说可能比较陌生的主题。

如果您有任何问题或代码改进建议,请在评论中告诉我。

以上が最新の Twitter API を使用して Twitter ウィジェットをデザインするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート