ソーシャルネットワークAPI:インターネットの実世界へのポータル

公開: 2022-03-11

ソーシャルネットワークAPIは、Googleが2008年5月にYouTube APIの最初のバージョンをリリースし、Facebookが2010年4月にGraph APIの最初のバージョンをリリースして以来、長い道のりを歩んできました。今日、これらのAPIを使用すると、ソーシャルネットワークプラットフォームに投稿を問い合わせることができます。 、ユーザー、チャネル、および人口統計データ。 独自のサービスを作成したり、ユーザーベースについて詳しく調べたりすることもできます。

この記事では、人気のあるソーシャルネットワークAPIのいくつかを利用する方法を検討します。

  • Facebook(グラフおよびマーケティングAPI)
  • インスタグラム
  • ツイッター
  • YouTube
  • Pinterest

また、それらの制限について説明し、これらのAPIで使用できる便利なツールのいくつかを調べます。 この記事の後半では、これらのAPIを任意のRailsアプリケーションに統合する方法についても説明します。

ソーシャルネットワークAPI:インターネットの実世界へのポータル

ソーシャルネットワークAPIを使用して、ユーザーが自分自身を知っているよりもユーザーをよく知るようにします。
つぶやき

一度に1つのソーシャルネットワークAPIに焦点を当て、その機能、制限、および利用可能なツールについて説明します。 この記事の後半で比較しやすくするために、さまざまなAPIとそのプロパティを含むマトリックスがあります。

APIを使用するには、最初に、OAuthベースのリクエストを使用してアプリケーションに代わってクエリを作成するアプリを設定する必要があります。 ユーザーはアプリに対して認証を行い、結果のユーザーアクセストークンを使用してユーザーのデータにアクセスできます。

フェイスブック

現在は時代遅れのFQL(Facebookクエリ言語)は、Facebookからすべてのデータにアクセスするために使用できるSQLのようなクエリ言語でした。

Facebookは2010年4月にGraphAPIの最初のバージョンをリリースしました。この記事を書いている時点での最新バージョンは2016年4月12日に導入された2.6です。これはクエリに使用できる低レベルのHTTPベースのAPIです。データを作成し、投稿を作成し、自動広告キャンペーンを作成します。

ツール

グラフAPIエクスプローラーは、FacebookAPIを操作するときに最も一般的に使用されるツールです。 ブラウザでGraphAPIクエリを実行し、結果を確認できます。アプリのアクセストークンのいずれかを使用するか、選択したスコープでその場でトークンを作成できます。

機能

Graph APIはRESTベースのAPIであり、特定のノードでHTTPリクエストごとにオブジェクトを作成、更新、削除できます。

アクセストークン

Graph APIに対してクエリを実行するには、ユーザーがアプリで正常に承認するとすぐに取得されるアクセストークンが必要です。 アクセストークンは、アプリケーションによって保存される必要があります。

スコープ

スコープは、ユーザーに代わって実行できるアクションを決定します。 ユーザーがアプリで承認すると、アプリケーションは特定のスコープを要求します。 たとえば、 publish_actionsスコープを使用すると、アプリはユーザーに代わって投稿を公開できます。 メールスコープを使用すると、アプリはユーザーのメールを読み取ることができます。 すべてのスコープの完全な概要は、公式ドキュメントに記載されています。

publish_actionsads_managementなどの特定のスコープでは、アプリのリリース前にFacebookによるレビューが必要です。

Graph APIがどのように機能するかを示すために、APIを使用して投稿を読み取り、作成、更新、および削除する方法を示します。

独自の投稿を取得するには、GETクエリ/me/postsを実行します。 結果は、メッセージ、created_time、idを含む投稿のリストを含むJSON文字列になります。 prettyなパラメーターまたはJSONフォーマッターを使用して、応答が乱雑に見えないようにすることができます。

投稿に関するより多くのデータを取得するには、クエリパラメータとしてフィールドを使用してクエリを拡張できます。 たとえば、クエリme/posts?fields=reactions, pictureは、投稿の画像と反応を示します。

投稿を作成するには、 message: hello worldなどのパラメーターを使用して、エッジフィード( me/feedなど)に対してPOSTアクションを送信するだけです。 Graph APIは、作成した投稿のIDを持つJSONオブジェクトを返します。 その後、アドレスhttp://facebook.com/[post_id]で投稿を表示できます。

投稿を更新するには、更新するフィールドをパラメーターとして使用して、POSTリクエストを投稿のノードに送信できます。 例: /[post_id]およびMessage: lorem ipsumのようなパラメータ:loremipsum。 値がtrueまたはfalseの成功インジケーターが返されます。

投稿を削除するには、投稿ID( /[post_id]など)を使用してノードにDELETEリクエストを送信するだけです。 戻り値は、成功値がtrueまたはfalseのJSONオブジェクトになります。

すべてのノードとアクションの完全な概要は、GraphAPIリファレンスにあります。

マーケティングAPI

マーケティングAPIは、Facebook広告を管理し、アプリケーションを通じて広告インサイトを取得するための強力なツールであるため、特筆に値します。

他のGraphAPIメソッドと同じように機能します。 ただし、ユーザーの広告にアクセスするには、 ads_managementスコープが必要です。 Facebookは、アプリを公開する前にアプリを確認する必要もあります。

テスト

アプリを作成すると、開発モードになり、アプリダッシュボード( https://developers.facebook.com/apps/など)に自動的に表示されます。

開発モードでは、管理者、開発者、テスターのみがアプリにアクセスできます。 アプリダッシュボードの役割セクションにテスターと管理者を追加できます。

レビュープロセス

特定の権限を追加する場合、Facebookはアプリを公開する前にアプリを確認する必要があります。 レビュープロセスは、この一連のガイドラインによって定義されます。

レビューのために特定のアイテムを送信するには、アプリダッシュボードの[アプリレビュー]セクションにアイテムを追加するだけです。 その後、Facebookがレビュープロセスを案内し、アプリが承認されるとアラートが表示されます。

制限と回避策

レート制限

アプリは、ユーザーごとに1時間あたり合計200回の呼び出しを行うことができます。 その制限に達すると、API呼び出しでエラーが発生します。

Facebookで投稿を検索する

Facebookは、GraphAPIとFQLを介したFacebookでの投稿とタグの検索を制限しています。 ただし、Google Search APIを使用してFacebookの公開投稿を検索し、URLのpost-idを使用して、GraphAPIを介して特定の投稿に関する詳細情報を取得できます。

カスタムオーディエンスデータの取得

FacebookのAudienceInsightsは、興味、人口統計、またはその他の属性(たとえば、電子メールアドレスのコレクション)に基づいて特定のオーディエンスについて詳しく知るための強力な調査ツールです。

ただし、広告APIを使用してオーディエンスインサイトを自動的に作成する方法は見つかりませんでした。 これに関する創造的なアイデアや提案があれば、コメントでお知らせください。

インスタグラム

InstagramAPIイラスト

Instagram APIは2014年4月に最初にリリースされ、ユーザーの投稿を分析してユーザーが自分の投稿を管理するのに役立つアプリを作成できます。

ツール

この記事の時点では、InstagramのAPIコンソールは非推奨になっているため、ブラウザーでのテスト目的でApigeeを使用することをお勧めします。

機能

InstagramAPIはRESTベースのAPIです。 そのすべてのエンドポイントは、公式ドキュメントに記載されています。

アクセストークン

Instagram APIに対してクエリを実行するには、ユーザーがアプリで承認するとすぐに取得されるアクセストークンが必要です。 ユーザーがアクセストークンを受け取るには、ユーザーをアプリの認証URLに誘導する必要があります。 アプリを承認した後、サーバーはユーザーをリダイレクトし、トークンを読み取ることができるようになります。

スコープ

アプリはさまざまな権限を要求できます。 たとえば、「基本」では、ユーザーのプロファイル情報とメディアの読み取りに制限されます。 「public_content」を使用すると、ユーザーに代わって任意の公開プロファイルとメディアを読み取ることができます。

Instagram APIがどのように機能するかを示すために、メディアエンドポイントhttps://api.instagram.com/v1/media/popularに基づいたいくつかの例を見ていきます。

このエンドポイントは、アクセストークンをパラメーターとして渡した場合、Instagramから現在人気のあるメディアを返します。 結果は、それぞれのメディアID、画像へのリンク、いいね、コメント、投稿したユーザー、その他の属性を含む投稿のJSON配列になります。

apigeeを使用して、APIエンドポイントとそのパラメーターについていろいろ試してみることができます。

テスト

Instagramプラットフォームで作成されたすべての新しいアプリは、サンドボックスモードで起動します。 これは完全に機能する環境であり、レビューのためにアプリを送信する前に、公開されているAPIエンドポイントをテストできます。

アプリをテストするには、ステージングバージョンを作成し、レビューを通過したライブバージョンではなく、そのバージョンですべてのクエリを実行します。

レビュープロセス

サンドボックスモードのアプリは任意のAPIエンドポイントを使用できますが、限られた数のユーザーとメディアに制限されています。 これは、アプリを開発およびテストするための優れたメカニズムです。

ライブ配信してすべてのInstagramコンテンツにアクセスするには、レビューのためにアプリケーションを送信する必要があります。 確認すると、アプリが承認されたユーザーのスコープのみをリクエストできるようになります。

制限と回避策

人口統計分析

この記事を書いている時点では、Instagramはその情報を提供していないため、パブリックユーザーの年齢、性別、または興味に関する情報を取得する方法はありません。

フォロワーまたはInstagramユーザーのリストに関する人口統計データを取得するには、すべてのユーザーを繰り返し処理し、フォロワーまたは略歴で提供されている情報に基づいて、年齢、性別、または興味を判断する必要があります。

この問題に対する優れたビッグデータソリューションは、一部の企業にとって価値のあるサービスになる可能性があります。

レート制限

Instagramプラットフォームのすべてのレート制限は、スライド式の1時間ウィンドウのアクセストークンによって制御されます。 ライブアプリには、サンドボックスモードのアプリよりも高いレート制限があります。 ライブアプリのグローバルレート制限は、現在1時間あたり5,000コールです。

ツイッター

Twitter APIは、2006年9月に最初にリリースされました。これは、Twitterデータへの読み取りおよび書き込みアクセスを提供するパブリックRESTAPIです。 認証はOAuthを使用して実行されます。 応答はJSON形式です。

ツール

Twitterには、ブラウザーでリクエストをテストするために使用できるapigeeを利用したAPIコンソールツールがあります。

機能

REST APIを使用すると、ユーザーのツイート、フォロワー、フォローしているユーザーを取得できます。 他のツイートでハッシュタグを検索することもできます。

アクセストークン

Twitterを使用すると、ユーザーがアクセストークンの代わりに認証できるアプリを作成できます。 認証モデルはOAuthです。

スコープ

アプリの設定ページで設定する必要がある権限は、読み取り専用と読み取りと書き込みの2つだけです。 後者を使用すると、ユーザーに代わってツイートを作成したり、他の投稿アクションを実行したりできます。

Twitter APIの使用法を示すために、許可されたユーザーのツイートを取得します。 結果は、ツイートの画像、お気に入り、リツイート、URL、作成日、およびその他の属性を含むJSON配列になります。 Apigeeを使用して、APIエンドポイントとそのパラメーターを試してみてください。

テストとレビューのプロセス

現在、TwitterAPIで利用できるレビュープロセスまたはテストモードはありません。

制限と回避策

人口統計分析

現在、誰かのTwitterフォロワーから人口統計データを取得する簡単な方法はありません。 総当たり攻撃のアプローチは、各フォロワーを閲覧し、彼らのバイオアカウントとリンクされたソーシャルネットワークアカウントを介してデータを取得しようとすることです。

次に、データ分析を通じて収集されたフォロワーデータに基づいて、さらに推測を行うことができます。 より多くの洞察を得るためのもう1つの方法は、Twitterの有料エンタープライズAPIプラットフォームGNIPを使用することです。 特に、APIを介してオーディエンスを作成し、それらに関する情報を取得できます。 APIは現在ベータ版です。

レート制限

Twitterには、ユーザーごとと15分ごとのレート制限があります。 アプリケーションに複数のトークンがある場合は、制限に達しないようにするために、パブリック操作用にトークンを置き換えることができます。

YouTube

YouTubeAPIイラスト

YouTube Data APIは、2013年1月に最初に導入されました。これにより、アプリケーションにYouTube機能を追加したり、コンテンツを検索したり、YouTubeチャンネルの人口統計を分析したりできます。 これは、JSON応答を返すOAuthのトーク​​ンベースのRESTAPIです。

ツール

API Explorerを使用すると、許可されていない要求と許可された要求をテストできます。 提供されたエンドポイントに対してブラウザからリクエストを実行できます。

機能

特に、アクティビティ、チャット、ライブブロードキャスト、プレイリスト、チャンネル、ビデオ、およびサブスクリプションを操作できます。 ほとんどのエンドポイントでは、YouTubeアカウントで承認する必要があります。

アクセストークン

YouTube Data APIは、プライベートユーザーデータへのアクセスを承認するためのOAuth2.0プロトコルをサポートしています。 ユーザーがアプリケーションで承認されると、アクセストークンを保存する必要があるアプリケーションにリダイレクトされます。

OAuth 2.0認証を使用するには、最初にGoogleデベロッパーコンソールで認証認証情報を取得する必要があります。

スコープ

YouTube Data APIは現在、次のスコープをサポートしています。

  • SSLを強制する-YouTubeアカウントを管理しますが、SSL接続を介してのみ管理します。
  • デフォルト-YouTubeアカウントを管理します。 このスコープは、機能的にはyoutube.force-sslスコープと同じですが、SSL接続は必要ありません。
  • 読み取り専用-YouTubeアカウントを表示します。
  • アップロード-YouTubeビデオをアップロードし、YouTubeビデオを管理します。
  • パートナーチャネル監査-マルチチャネルネットワークがネットワーク内のチャネルを受け入れるまたは拒否するための基準として使用する情報を取得します。

Youtube Data APIの使用例として、次のリクエストは、タイトルと説明に「コーディング」が含まれる動画をクエリします。

 https://www.googleapis.com/youtube/v3/search?part=snippet&q=coding&key={YOUR_API_KEY}

結果は、タイトル、説明、videoId、およびchannelIdを含むJSONオブジェクトです。 後者を使用して、チャネルについて詳しく知ることができます。

partパラメータは、特定のリソースを返すAPIリクエストに必要です。 このパラメーターは、API応答に含める必要のあるリソースプロパティを識別します。 たとえば、ビデオリソースには、スニペット、contentDetails、fileDetails、player、processingDetails、recordingDetails、statistics、status、suggestions、topicDetailsの部分があります。

APIキーを除く他のすべてのパラメーターは、呼び出しごとに異なります。 詳細については、APIリファレンスガイドをご覧ください。

Pinterest

Pinterest APIは、2015年4月に最初にリリースされました。これは、ボード、ピン、フォロワーなどのユーザーのPinterestデータへのアクセスを提供するRESTfulAPIです。 Pinterest APIはOAuthを使用し、ユーザーのコンテンツを操作するときに読み取りと書き込みの両方の権限を許可します。

ツール

他の人と同様に、Pinterestはエンドポイントをテストしてクエリを実行するためのAPIエクスプローラーを提供します。 ここで彼らのすべてのツールを見ることができます。

機能

Pinterest REST APIを使用すると、OAuthを使用してピン、ボードを作成し、Pinterestデータをクエリできます。

アクセストークン

PinterestはOAuth2.0を使用して、アプリとユーザー間のリクエストを認証します。 すべてのリクエストはHTTPS経由で行う必要があります。

スコープ

スコープは、ユーザーに代わってアプリが実行できることを決定します。 Pinterestは次のスコープを使用します。

  • none (識別子を知っている必要があります):ユーザーのプロファイル、ボードとピンの詳細、およびボードのピンでGETメソッドを使用します。
  • read_public :ユーザーのピン、ボードなどでGETメソッドを使用します。
  • write_public :ユーザーのピンとボードでPATCH、POST、およびDELETEメソッドを使用します。
  • read_relationships :ユーザーのフォローとフォロワー(ボード、ユーザー、インタレスト)でGETメソッドを使用します。
  • write_relationships :ユーザーのフォローとフォロワー(ボード、ユーザー、インタレスト)でPATCH、POST、およびDELETEメソッドを使用します。

Pinterest APIの使用法を示すために、ユーザーの最新のピンを読み取る方法を示します。

https://api.pinterest.com/v1/me/pins/?access_token={your_token}&fields=id,link,note,url,counts,board,created_atは、ユーザーのピンをID、リンク、メモ、 url、likes、repins。

テストとレビューのプロセス

アプリは最初は開発モードであり、本番モードでリリースする前にレビューのために送信する必要があります。

制限と回避策

人口統計分析

ボードから人口統計データを取得する一般的な方法はありません。 ただし、取締役会のフォロワーとその情報を、その経歴や他のソーシャルネットワークアカウントへのリンクから取得することはできます。 ユーザーの一般的な接続を介したビッグデータソリューションも可能です。

ピンを検索する

現在、APIを介して特定のタグまたはキーワードを持つピンを検索する方法はありません。 Google Custom Search APIを使用してPinterestピンのみで結果を検索し、URLからピンIDを収集することで、この制限を回避できます。 IDを使用して、APIを介してピンに関する情報を取得できます。

レート制限

各アプリ(一意のアプリIDを持つ)では、一意のユーザートークンごとに、エンドポイントごとに1時間あたり1,000回の呼び出しが許可されます。

すべてのAPI応答は、レート制限に関する最新情報を提供するヘッダーを返します。 X-Ratelimit-Limitはその特定のリクエストのレート制限であり、X-Ratelimit-Remainingは60分のウィンドウに残っているリクエストの数です。

特定のエンドポイントのレート制限を超えると、429の「リクエストが多すぎます」というエラーコードが表示されます。

ソーシャルネットワークAPIの比較

バージョンOAuth フォーマット人口統計
フェイスブックv2.6
初期リリース:2010年4月
OAuth 2 JSON応答を伴うREST要求サポートされています
インスタグラムv1
初期リリース:2014年4月
OAuth 2 JSON応答を伴うREST要求サポートされていません
ツイッターv1.1
初期リリース:2006年9月
OAuth 1 JSON応答を伴うREST要求GNIPでのみサポートされます
YouTube v3
初期リリース:2013年1月
OAuth 2 JSON応答を伴うREST要求サポートされています
Pinterest v1
初期リリース:2015年4月
OAuth 2 JSON応答を伴うREST要求サポートされていません

Deviseを使用したデモアプリケーション

多数のソーシャルネットワークAPIパッケージとライブラリのおかげで、これらのAPIを新規または既存のアプリケーションに統合することがこれまでになく簡単になりました。 最新のプラットフォームとフレームワークのほとんどには、認証の側面を統合して、きちんとしたプラグインアーキテクチャを備えた単一のライブラリにする、実績のあるサードパーティライブラリがあります。

ソーシャルネットワークAPIの図

この記事では、Rubyの宝石であるDeviseがRailsアプリケーションに対してこれまでにないほどエレガントにこれを行う方法を見ていきます。 Deviseは、Wardenに基づく柔軟な認証ライブラリであり、複数のログインプロバイダーの認証、登録、ログイン、およびデータストレージを実装します。 あなたがフロントエンドの人で、AngularJSに似たものをチェックしたい場合は、この記事をご覧ください。

このクラスのほとんどのライブラリと同様に、Deviseには、上記のソーシャルネットワークAPIのサポートが組み込まれていません。 これらの各ソーシャルネットワークAPIのサポートは、追加のgemを通じて提供されます。 この記事で説明した5つのプロバイダーをカバーするRails認証には、次のgemを使用できます。

 gem 'omniauth-facebook' gem 'omniauth-pinterest' gem 'omniauth-twitter' gem 'omniauth-google-oauth2' gem 'omniauth-instagram'
Railsの最も優れている点の1つは、オープンソースコミュニティによって作成されたプラグインが多数あることです。 これらは宝石として配布されます。 中央構成ファイルの下にリストされているこれらのgemは、Bundlerによって管理されています。

これらは、これらの各プロバイダーの認証、登録、ログイン、およびストレージのみを提供するため、実際のAPIクライアント用に次のgemも取得する必要があります。

 gem 'twitter' # https://github.com/sferik/twitter gem 'instagram' # https://github.com/facebookarchive/instagram-ruby-gem gem 'koala' # (Facebook API) https://github.com/arsduo/koala gem 'google-api-client' # (YouTube API), https://github.com/google/google-api-ruby-client gem 'pinterest-api' # https://github.com/realadeel/pinterest-api

Omniauthと認証

ユーザーがプロバイダーでアプリを承認するために、次のパスでリンクを提供するだけです。

 omniauth_authorize_path('user', :facebook) omniauth_authorize_path('user', :instagram) ...

ユーザーを認証した後にコールバックに反応するために、次のような関数としてスコープを使用してOmniauthCallbacksControllerを定義できます。

 class AuthenticationsController < Devise::OmniauthCallbacksController def facebook if request.env["omniauth.auth"] ... end end end

これは、トークンとデータを使用して新しい認証モデルをアプリケーションに追加する場所です。

 authentication = where(provider: omniauth.provider, user_id: user.id) .first_or_create do |auth| auth.user = user auth.uid = omniauth.uid auth.secret = omniauth.credentials.secret auth.token = omniauth.credentials.token ... end

API呼び出しを行う

これは、コアラを使用してFacebookAPIをクエリする方法の例です。 残りのプロバイダーはほぼ同じように機能し、gemのREADMEに文書化されています。

Koalaを使用してユーザーデータを取得する方法は次のとおりです。

 authentication = user.authentication_for_provider(:facebook) token = authentication.token api = Koala::Facebook::API.new(token) results = api.get_object("me")

その後、APIによって返されたJSONの結果を使用できます。 このデモアプリケーションのソースコードはGitHubで入手できます。

要約

ソーシャルネットワークAPIは、ソーシャルネットワークの大規模なデータセットをクエリし、アプリケーションのビッグデータを収集するための強力なツールを提供します。 これらのAPIの上にサービスを構築するか、それらを使用して独自のアプリケーションとユーザーの洞察を強化することができます。

Railsと利用可能なgemを使用すると、これらのAPIをRailsアプリに簡単に統合し、アプリとAPIの間の抽象化レイヤーを使用してインターフェースをクエリできます。