ソーシャルネットワークAPIは、Googleが2008年5月にYouTube APIの最初のバージョンをリリースし、Facebookが2010年4月にグラフAPIの最初のバージョンをリリースして以来、長い道のりを歩んできました。今日、これらのAPIを使用すると、ソーシャルネットワークプラットフォームに投稿を問い合わせることができます。 、ユーザー、チャネル、および人口統計データ。独自のサービスを作成したり、ユーザーベースについて詳しく調べたりすることもできます。
この記事では、人気のあるソーシャルネットワークAPIのいくつかを利用する方法を検討します。
また、それらの制限について説明し、これらのAPIで使用できる便利なツールのいくつかについて説明します。記事の後半では、これらのAPIを任意のAPIに統合する方法についても説明します。 Rails 応用。
一度に1つのソーシャルネットワークAPIに焦点を当て、その機能、制限、および利用可能なツールについて説明します。この記事の後半で比較しやすくするために、さまざまなAPIとそのプロパティを備えたマトリックスがあります。
APIを使用するには、最初に、OAuthベースのリクエストを使用してアプリケーションに代わってクエリを作成するアプリを設定する必要があります。ユーザーはアプリに対して認証を行い、結果のユーザーアクセストークンを使用してデータにアクセスできます。
現在は時代遅れのFQL(Facebookクエリ言語)は、Facebookからすべてのデータにアクセスするために使用できるSQLのようなクエリ言語でした。
Facebookは2010年4月にGraphAPIの最初のバージョンをリリースしました。この記事の執筆時点での最新バージョンは2016年4月12日に導入された2.6です。これはクエリに使用できる低レベルのHTTPベースのAPIです。データ、投稿の作成、さらには自動広告キャンペーンの作成。
画面サイズに基づくcss
ザ・ グラフAPIエクスプローラー FacebookAPIを使用するときに最も一般的に使用されるツールです。ブラウザでGraphAPIクエリを実行し、結果を確認できます。アプリのアクセストークンのいずれかを使用するか、選択したスコープでその場でトークンを作成できます。
Graph APIはRESTベースのAPIであり、特定のノードでHTTPリクエストごとにオブジェクトを作成、更新、削除できます。
Graph APIに対してクエリを実行するには、ユーザーがアプリで正常に承認するとすぐに取得されるアクセストークンが必要です。アクセストークンは、アプリケーションによって保存される必要があります。
スコープは、ユーザーに代わって実行できるアクションを決定します。ユーザーがアプリで承認すると、アプリケーションは特定のスコープを要求します。 publish_actions
たとえば、スコープを使用すると、アプリはユーザーに代わって投稿を公開できます。メールスコープを使用すると、アプリはユーザーのメールを読み取ることができます。すべてのスコープの完全な概要は次のとおりです。 公式ドキュメントに記載されています 。
publish_actions
のような特定のスコープまたはads_management
アプリのリリース前にFacebookによるレビューが必要です。
Graph APIがどのように機能するかを示すために、APIを使用して投稿を読み取り、作成、更新、および削除する方法を示します。
独自の投稿を取得するには、GETクエリ/me/posts
を実行します。結果は、メッセージ、created_time、idを含む投稿のリストを含むJSON文字列になります。 pretty
を使用できますパラメータまたは JSONフォーマッター 応答がすっきりと見えるようにします。
投稿に関するより多くのデータを取得するには、クエリパラメータとしてフィールドを使用してクエリを拡張できます。たとえば、クエリme/posts?fields=reactions, picture
投稿の写真と反応が表示されます。
投稿を作成するには、エッジフィードに対してPOSTアクションを送信するだけです。 me/feed
、message: hello world
などのパラメーターを使用します。 Graph APIは、作成した投稿のIDを持つJSONオブジェクトを返します。その後、アドレスhttp://facebook.com/[post_id]
で投稿を表示できます。
投稿を更新するには、更新するフィールドをパラメータとして投稿のノードにPOSTリクエストを送信します。例:/[post_id]
およびMessage: lorem ipsum
のようなパラメータ。 trueまたはfalseの値を持つ成功インジケーターが返されます。
投稿を削除するには、投稿ID(/[post_id]
など)を使用してノードにDELETEリクエストを送信するだけです。戻り値は、成功値がtrueまたはfalseのJSONオブジェクトになります。
すべてのノードとアクションの完全な概要は、 グラフAPIリファレンス 。
ザ・ マーケティングAPI Facebook広告を管理し、アプリケーションを通じて広告の洞察を得る強力なツールであるため、特筆に値します。
他のGraphAPIメソッドと同じように機能します。ただし、ads_management
が必要ですユーザーの広告にアクセスするためのスコープ。 Facebookは、アプリを公開する前に、アプリを確認する必要もあります。
アプリを作成すると、開発モードになり、アプリのダッシュボードに自動的に表示されます(つまり、https://developers.facebook.com/apps/
)。
開発モードでは、管理者、開発者、テスターのみがアプリにアクセスできます。アプリダッシュボードの役割セクションにテスターと管理者を追加できます。
特定の権限を追加する場合、Facebookはアプリを公開する前にアプリを確認する必要があります。レビュープロセスはによって定義されます この一連のガイドライン 。
レビューのために特定のアイテムを送信するには、アプリダッシュボードの[アプリレビュー]セクションにアイテムを追加するだけです。その後、Facebookがレビュープロセスを案内し、アプリが承認されるとアラートが表示されます。
node jsexpressエラー処理
アプリは、ユーザーごとに合計で1時間あたり200回の呼び出しを行うことができます。その制限に達すると、API呼び出しでエラーが発生します。
Facebookは、GraphAPIとFQLを介したFacebookでの投稿とタグの検索を制限しています。ただし、 Google検索API Facebookの公開投稿を検索し、URLのpost-idを使用して、GraphAPIを介して特定の投稿に関する詳細情報を取得します。
オーディエンスインサイト Facebookは、興味、人口統計、またはその他の属性(電子メールアドレスのコレクションなど)に基づいて特定のオーディエンスについて詳しく知るための強力な調査ツールです。
ただし、広告APIを使用してオーディエンスインサイトを自動的に作成する方法は見つかりませんでした。これに関する創造的なアイデアや提案があれば、コメントでお知らせください。
ザ・ 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コールです。
TwitterAPIは 最初にリリースされた 2006年9月に。 パブリックRESTAPI Twitterデータへの読み取りおよび書き込みアクセスを提供します。認証はOAuthを使用して実行されます。応答はJSON形式です。
Twitterには APIコンソールツール ブラウザでリクエストをテストするために使用できるapigeeを搭載しています。
REST APIを使用すると、ユーザーのツイート、フォロワー、フォローしているユーザーを取得できます。他のツイートでハッシュタグを検索することもできます。
Twitterでは、ユーザーができるアプリを作成できます 認証する アクセストークンの見返りに対して。認証モデルはOAuthです。
アプリの設定ページで設定する必要がある権限は、読み取り専用と読み取りと書き込みの2つだけです。後者を使用すると、ユーザーに代わってツイートを作成したり、他の投稿アクションを実行したりできます。
Twitter APIの使用法を示すために、許可されたユーザーのツイートを取得します。結果は、ツイートの画像、お気に入り、リツイート、URL、作成日、その他の属性を含むJSON配列になります。 Apigeeを使用して、APIエンドポイントとそのパラメーターを試してみてください。
現在、TwitterAPIで利用できるレビュープロセスまたはテストモードはありません。
現在、誰かのTwitterフォロワーから人口統計データを取得する簡単な方法はありません。強引なアプローチは、各フォロワーを閲覧し、バイオアカウントとリンクされたソーシャルネットワークアカウントを介してデータを取得しようとすることです。
次に、データ分析を通じて収集されたフォロワーデータに基づいてさらに仮定を立てることができます。より多くの洞察を得るためのもう1つの方法は、Twitterの有料エンタープライズAPIプラットフォームを使用することです。 GNIP 。特に、APIを介してオーディエンスを作成し、それらに関する情報を取得できます。 APIは現在ベータ版です。
Twitterには レート制限 ユーザーごとおよび15分ベース。アプリケーションに複数のトークンがある場合は、制限に達しないようにするために、パブリック操作用にトークンを置き換えることができます。
YouTube Data APIは、2013年1月に最初に導入されました。これにより、アプリケーションにYouTube機能を追加したり、コンテンツを検索したり、YouTubeチャンネルの人口統計を分析したりできます。これは、JSON応答を返すOAuthのトークンベースのRESTAPIです。
ザ・ APIエクスプローラー 許可されていない要求と許可された要求をテストできます。提供されたエンドポイントに対してブラウザからリクエストを実行できます。
C ++コードを学ぶ
特に、アクティビティ、チャット、ライブブロードキャスト、プレイリスト、チャネル、ビデオ、およびサブスクリプションを操作できます。ほとんどのエンドポイントでは、YouTubeアカウントで認証する必要があります。
YouTube Data APIは、次のOAuth2.0プロトコルをサポートしています。 アクセスの許可 プライベートユーザーデータに。ユーザーがアプリケーションで承認されると、アクセストークンを保存する必要があるアプリケーションにリダイレクトされます。
OAuth 2.0認証を使用するには、最初にGoogleデベロッパーコンソールで認証認証情報を取得する必要があります。
YouTube Data APIは現在、次のスコープをサポートしています。
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 API は2015年4月に最初にリリースされました。これは、ボード、ピン、フォロワーなど、ユーザーのPinterestデータへのアクセスを提供するRESTfulAPIです。 Pinterest APIはOAuthを使用し、ユーザーのコンテンツを操作するときに読み取りと書き込みの両方の権限を許可します。
他の人と同様に、Pinterestはエンドポイントをテストしてクエリを実行するためのAPIエクスプローラーを提供します。あなたは彼らのすべてのツールを見ることができます ここに 。
Pinterest REST API OAuthを使用して、ピン、ボードを作成し、Pinterestデータをクエリできます。
Pinterestは、OAuth 2.0を使用して、アプリとユーザー間のリクエストを認証します。すべてのリクエストはHTTPS経由で行う必要があります。
スコープは、ユーザーに代わってアプリが実行できることを決定します。 Pinterestは次のスコープを使用します。
C ++でコーディングする方法
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、いいね、再ピンを含むユーザーのピンを返します。
アプリは最初は開発モードであり、本番モードでリリースする前にレビューのために送信する必要があります。
ボードから人口統計データを取得する一般的な方法はありません。ただし、理事会のフォロワーとその情報を、彼らの略歴や他のソーシャルネットワークアカウントへのリンクから取得することはできます。ユーザーの一般的な接続を介したビッグデータソリューションも可能です。
現在、APIを介して特定のタグまたはキーワードを持つピンを検索する方法はありません。 Googleカスタム検索APIを使用してPinterestピンのみで結果を検索し、URLからピンIDを収集することで、この制限を回避できます。 IDを使用して、APIを介してピンに関する情報を取得できます。
各アプリ(一意のアプリIDを持つ)では、一意のユーザートークンごとに、エンドポイントごとに1時間あたり1,000回の呼び出しが許可されます。
すべてのAPI応答は、レート制限に関する更新を提供するヘッダーを返します。 X-Ratelimit-Limitはその特定のリクエストのレート制限であり、X-Ratelimit-Remainingは60分のウィンドウに残っているリクエストの数です。
特定のエンドポイントのレート制限を超えると、429の「リクエストが多すぎます」というエラーコードが表示されます。
バージョン | 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要求 | サポートされています |
v1 初期リリース:2015年4月 | OAuth 2 | JSON応答を伴うREST要求 | サポートされていません |
多数のソーシャルネットワークAPIパッケージとライブラリのおかげで、これらのAPIを新規または既存のアプリケーションに統合することがこれまでになく簡単になりました。最新のプラットフォームとフレームワークのほとんどには、認証の側面をすべてのAPIをきちんとしたプラグインアーキテクチャを備えた単一のライブラリに統合する、実績のあるサードパーティライブラリがあります。
この記事では、その方法を見ていきます モットー 、Ruby gemは、これをRailsアプリケーションに対してこれまでになくエレガントに実行します。 Deviseは、に基づく柔軟な認証ライブラリです。 ワーデン 複数のログインプロバイダーの認証、登録、ログイン、およびデータストレージを実装します。あなたがフロントエンドの人で、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_authorize_path('user', :facebook) omniauth_authorize_path('user', :instagram) ...
ユーザーを認証した後にコールバックに反応するために、次のような関数としてスコープを使用してOmniauthCallbacksControllerを定義できます。
class AuthenticationsController これは、トークンとデータを使用して新しい認証モデルをアプリケーションに追加する場所です。
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の間の抽象化レイヤーを使用してインターフェースにクエリを実行できます。