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

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

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

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JavaScript

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

Q&A

解決済

3回答

1458閲覧

「はてな」にログイン中かどうかJavascriptで判定するには?

panasus

総合スコア12

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

JavaScript

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

0グッド

0クリップ

投稿2019/08/10 15:39

やりたいこと

「はてなブログ」でブログを書いています。

読者もはてなブログユーザーだったら(はてなアカウントでログイン中なら)
メッセージA
を画面に表示する。

はてなブログユーザーでない場合は
メッセージB
を画面に表示する。

というような処理をはてなブログ上でJavascriptを使って実現したいです。

現状

cookieを取得して
その中に特定の値があれば「はてなユーザー」かどうか判定できるのではないかと思ったのですが
今のところ成功していません。

自分のブログのドメインの?cookieを取得するところまではできたんですが
cookieの中のどのキーに注目すればいいのかが解明できていません。
そもそも方向性として合っているのかもちょっと自信がないです。

これもやりたい

Twitterユーザーには
「Twitterでフォローしてね」

Facebookユーザーには
「Facebook登録してね」

みたいなメッセージを表示させるために

  • Twitterでログイン中か
  • Facebookでログイン中か

なども判定したいです。
はてなブログ上でJavascriptを使ってこれらは判定できるものでしょうか?

ログイン中かどうかの情報がcookieに保存されていたとしても
セキュリティ的に他サイトのcookieまで見れるものなのか?
というのが疑問です。

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

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

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

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

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

guest

回答3

0

ベストアンサー

ログイン中とそうでない時で変わる要素で判断できませんか?

例えばはてなブログなら画面上のログインボタン。
ログイン中なら違うアイコンかと思います(アカウント無いから想像)

投稿2019/08/10 23:33

oikashinoa

総合スコア2826

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

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

panasus

2019/08/10 23:48

ありがとうございます!それならできそうです。 ログイン中なら読者側のIDが表示される場所が ログインしてない状態だと「アカウントを作る」みたいなボタンが表示されていました。 ここのDOMをJavascriptで検索すれば ログイン中かどうか判定できそうです。
panasus

2019/08/11 00:28 編集

IDが表示されたり、「アカウントを作る」ボタンがある領域が丸ごとiframeの中でした。 iframeの中にアクセスしようとしたら以下のようなエラーになりDOMを取得できませんでした。 ``` Uncaught DOMException: Blocked a frame with origin "https://xxx.hatenablog.com" from accessing a cross-origin frame. ``` 他の手段を考えてみます。
oikashinoa

2019/08/12 04:57

下の方に、はてなブログ始めませんか的な案内が出てませんか?iframeでなければ使えるかも。 Start using Hatena Blog!
panasus

2019/08/12 07:32

「はてなブログをはじめよう」という表示がありますね。 パソコンだと ログイン中、この表示が無い ログアウト中、この表示がある で切り分けができそうです。 スマホだとなぜかこの部分がiframeになっていました。 パソコンユーザーに限定すればやりたかったことが実現できそうです。 スマホにも適用するため 「はてなブログをはじめよう」の表示をどうやって制御しているのか調べています。 javascriptで制御していると思うのですが難読化?が施してあり解読に難航しています。
guest

0

一般的な見解ですが

セキュリティ的に他サイトのcookieまで見れるものなのか?

ドメインが違えばできません。
仮にcookieが取得できると、その人のログイン状態が取得できる上、ログイン情報もゲットできる事になります
(ログイン情報=勝手にログインされる状態)

はてなブログがどうかは分かりません。
これが可能な状態を一般的にXSSと呼ばれるかと思います

投稿2019/08/10 23:02

mikkame

総合スコア5036

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

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

panasus

2019/08/10 23:54

やはり無理ですよね。
guest

0

それぞれAPIが提供されていますし、ほかにもOAuthという概念があります。
それらでできる範囲のことは可能です。
Twitter API
Facebook for Developers
はてなAPI
まずは提供されている機能を確認し「自身がやりたいことが実現可能か」調査、検証してください。

が、ログイン状態も含めてあくまで「他者サイト」の出来事であるため、結局のところはそのユーザーが当該SNSをブラウザで開かないとわかりません。

それぞれのリンクを設置するくらいが限界ではないでしょうか。

投稿2019/08/11 01:54

編集2019/08/11 02:27
m.ts10806

総合スコア80765

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

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

mikkame

2019/08/11 02:18

OAuthを使用しても「はてなにログインしているかどうか」を確認する事はできません。 OAuthを使用してできる事は「はてな経由で、自アプリにログインしたかどうか、はてなアカウントを持っているか」ぐらいです。 現在はてなでログインしているかどうかは、自アプリにログインさせようとしたタイミングでしか確認できません。(仮に、自アプリにログイン後、はてなをログアウトしても検知できない) TwitterもFacebookも同様です。 要件ともずれています。
m.ts10806

2019/08/11 02:20

紛らわしかったかもしれませんが、私が言いたいのは「それでできること以外はできません」ということであって 「APIやOAuthを使えばもしかしたらできるかもよ?」ということではないです。まずは公式に提供されている機能を確認してくださいということですね。 結局伝えたいのは下記です。 >が、ログイン状態も含めてあくまで「他者サイト」の出来事であるため、結局のところはそのユーザーが当該SNSをブラウザで開かないとわかりません。 それぞれのリンクを設置するくらいが限界ではないでしょうか。
m.ts10806

2019/08/11 02:23

ちょっと表現調整しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問