質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

879閲覧

YouTubeの登録者かどうかWEBサイトで判断したい

yooashleaf

総合スコア32

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2018/12/04 20:04

YouTubeの登録者かどうかWEBサイトで判断したい

私のチャンネルの登録者だけを対象に、
私が所有するWEBサイトでサービスを行いたいのですが、どのような方法がありますでしょうか?

登録者はYouTubeにログインした状態で、当WEBサイトにアクセスさせる事を前提とします。

【試したこと】
(1)YouTubeのチャンネル登録ボタンを当WEBサイトに設置する。
登録者には解除ボタン、未登録者には登録ボタンが表示されるので、cssやjsの変数を解析する

YouTubeのチャンネル登録ボタンはjsですが、結局iframeで描画しているので取得できない

(2)PHPやperlで、(1)のiframeのscrをスクレイピングしてhtmlをとってくる

スクレイピングするのはあくまで設置サーバなので、閲覧者の状態には関係なく、
すべて未登録者の扱いとなってしまう。

(3)jsで、(1)のiframeのscrをスクレイピングしてhtmlをとってくる(jquery.xdomainajax.js)

phpやperlとは違い、閲覧者の状態に依存するのかと思いましたが、
結局(2)の結果と同じく、すべて未登録者の扱いとなってしまう。

【試していない】
(4)YouTubeの管理画面で登録者を見ることが出来るので、これをリスト化する。
一覧で登録者全員を見れるわけではないので、一度に取得できないですし、
結局リスト化しても閲覧者がどのIDか判断することができない

(5)Youtube APIを使う
動画情報などは取得できますが、閲覧者に対して使えるものはない?

(6)YouTubeのチャンネル登録ボタンを当WEBサイトに設置して、
スクショを撮りそれを解析する。
そんなマウスマクロソフトみたいな事がjsなどで出来るのか...

という感じで完全にストップしております。
どなたか思いつく方、ぜひご回答をお待ちしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

ユーザーがどのチャンネルに登録しているかというのはプライベートなデータなので、あなたのサイトの訪問者があなたのチャンネルに登録しているかという情報をあなたが勝手に得ることはできないようになっているはずです。

YouTube Data APIでOAuthを使って閲覧者のYouTubeアカウントのデータにアクセスする許可を閲覧者から得てから、登録情報を得ることはできると思います。具体的には、ユーザーには例えば下のような画面が表示されて、ユーザーが許可するとアクセストークンがブラウザーに送られ、そこからJSでYouTube Data APIを通じてユーザーのYouTubeアカウントの情報にアクセスできるようになります。
YouTube OAuthの画面

私は使ったことはないですが、特定のチャンネルに登録しているかどうかは下のAPIで取得できるのではないかと思います。
Subscriptions: list - YouTube Data API

その他参考になりそうなページ
Using OAuth 2.0 for JavaScript Web Applications - YouTube Data API
JavaScript コード サンプル - YouTube Data API

投稿2018/12/05 00:53

karamarimo

総合スコア2551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yooashleaf

2018/12/27 13:14

回答ありがとうございました。 YouTube Data APIのOAuthにて実装できました!
guest

0

実際に試したわけではないので未確認だけど
YouTube APIで認証したユーザーの購読チャンネルが分かるのでこの中に自分のチャンネルがあればOKと判断すればいい。
https://developers.google.com/youtube/v3/docs/subscriptions/list?hl=ja
まずGoogleアカウントでOAuth認証→APIで購読チャンネル取得。
Google APIは慣れてれば簡単だけど初めて使う場合は面倒なので色々調べることになる。

投稿2018/12/05 00:49

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

軽く調べた感じだと、Googleが用意しているOAuth認証から、ログインユーザのトークンをいただき、
YouTube Data APIからchannelのlistに問い合わせれば行けそうだという感じの事が書いてありました。
https://developers.google.com/youtube/v3/getting-started?hl=ja

詳細はよくわかりません、頑張って調べてみてください。
これがダメなら方法は無いと思って下さい。

ただし、1の状態でチャンネルボタンの表示まで行くなら、YouTubeはiframeに比較的寛容な作りになっているようです。
JSでiframe内に入って中のHTMLタグの情報を持ち帰る事自体は可能です。
ページ内容がロードされるまで待つような仕組みを導入すれば質問文の要件を叶えられるでしょう。
まぁ、YouTube提供側が「iframeでスクレイピングまがいの事されたくないから禁止」と言った時点で終わるので永久に使える保証はありません。


以下は質問文で試した内容の評価です。
これらのテクニックは邪道、もっと言えばフィッシングサイトを作る技術に非常に近いものがあります。

例えを交えて説明します。
悪意のWebサイト開設者としての視点に立って説明しますが、
自分のサイトに訪れた人間のネット銀行にログインしているかを調査し、口座番号を抜き出したり、自分の口座に振り込みをさせたい。
…と言っているのに非常に近い内容だと思って下さい。

何も「お前はフィッシングサイト作ってる犯罪者だー!」と糾弾するつもりではありません。
「Webにはフィッシングサイトをガードするセキュリティ絡みのルールが沢山あり、それにより不可能になる技術が沢山あるよ」って事を知っておいて下さい。

例えば1のiframeを使う方法ですが、URLをネットバンクの1文字違いのドメインを取得したりして、bodyタグの直下にiframeを仕込みつつユーザーの操作ログをJSで抜き出すキーロガー的なフィッシングサイト技術が存在します。
それを防止する為に、「そもそも私のWebサイトはiframeで表示出来ませんよ」とhttp通信のヘッダー部分で宣言しておく事で、Chrome等のブラウザが「ここはifraame禁止のサイトなんだ!?じゃあ今いるサイトはフィッシングサイトかも!?」とiframeの表示を取りやめるような仕組みになっています。

2や3はそのユーザがログインしてないからダメに決まってるでしょ!
3は一見行けそうですが、jquery.xdomainajax.jsというサービスの仕組みの話で
AjaxでのHTTP問い合わせは先方のWebサーバが許可していなければ不可能
→じゃあYahooサーバで代わりにHTTP問い合わせしてよ
→そのYahooサーバはクロスドメインのAjax許可してるからAjax不許可のサイトが取れたわサンキュ
……というカラクリであり、やってる事は2と全く同じです。

ログイン認証は基本的にCookieのキーでやっているので、YouTubeのCookieを抜き出してHTTPリクエストにペタっと貼り付ければ可能ですが、これはXSSスクリプティングの目的と同じです。
ネットバンクのログイン情報を抜き出せば口座番号も振り込みもし放題だぜhehe...と同じ事を言っているので、
当然ガードも固くなり他人のWebサイトのCookie情報を抜き出す事は出来ません。

4はまぁやっても多分無駄、6はそもそもイベント仕込めるんじゃね?1の劣化だからやる意味ない。
…とまぁ、こんな感じです。

投稿2018/12/05 03:15

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問