🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1814閲覧

ログイン機能を実装したい

knkceeeen

総合スコア12

OAuth

OAuth(Open Authorization)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

OAuth 2.0

OAuth 2.0(Open Authorization 2.0)は、APIを通して保護されたリソース(サードパーティのアプリケーション)へアクセスする為のオープンプロトコルです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/09/17 15:14

編集2019/09/17 23:16

やりたいこと

google認証を実装したいです
ユーザーが簡単に登録(ログイン)できるようにするのが目的です。

現状

ログインはあくまでもサブで、基本的にはログインをせずに閲覧できるサイトを作成しています。

以下のページを参考に実装し、ユーザーの名前やメールアドレスが取得出来たのですが
indexに置いているため、サイトにアクセスした瞬間にログインが求められます。
参考にしたページ

headerを使っているからというのは分かるのですが、他のやり方がわかりませんでした。

取得したメールアドレスやユーザー名はそのままDBに登録したいです。

##そもそも
とにかく簡単にユーザーを識別したいので、メールアドレスなども必要ないのですが、
もっと簡単なログイン機能というものは存在するのでしょうか。

##やってみたこと
Warning: file_get_contents(https://accounts.google.com/o/oauth2/token): failed to open stream: HTTP request failed!
Warning: file_get_contents(https://www.googleapis.com/oauth2/v1/userinfo?): failed to open stream: HTTP request failed!
index以外に置くとエラーが上記エラーが出てしまいます。
昨日は出て、今回はなぜか出なかったのですが、headers already sent byエラーも出てしまいました

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

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

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

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

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

m.ts10806

2019/09/17 20:02

OAuth もタグに追加しておいてください
退会済みユーザー

退会済みユーザー

2019/09/17 23:06

Google oauth はほぼそのまま使えるサンプルの提供があります
knkceeeen

2019/09/17 23:20

>>OAuth もタグに追加しておいてください OAuthタグを追加しておきました。 >>Google oauth はほぼそのまま使えるサンプルの提供があります 公式リファレンス等があるのでしょうか
guest

回答3

0

###そもそも

とにかく簡単にユーザーを識別したいので、メールアドレスなども必要ないのですが、
もっと簡単なログイン機能というものは存在するのでしょうか。

やはり外部認証が一番簡単では?
Google,Twitter,Facebook等でだいたいカバーできる気がします。

投稿2019/09/18 03:03

kyoya0819

総合スコア10429

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

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

knkceeeen

2019/09/18 14:46

ありがとうございます。google認証を使用するという考えは間違ってはいないのですね。
kyoya0819

2019/09/18 21:12

あくまで時と場合ですけど
kyoya0819

2019/09/18 22:45

例えば、多くの人に登録してもらいたかったら外部認証だけでは不十分でしょう。 あくまで、外部認証は便利ツールです。全てではありません。 まぁ最近はGoogleアカウントをほとんど誰でも持っているとは思いますが... 幅広い人に登録してもらいたいならメール(ユーザー名)とパスワードか外部認証というセットにした方が良いかと思われます。
kyoya0819

2019/09/18 22:46

そもそも論でユーザーを識別するだけならユーザーID(自動生成)とパスワード(自動生成)とかでもいい気がします。 まぁメアドがないとパスワード忘れやユーザー名忘れの対処が不可能になるだけですが秘密の質問的なのを作れば対応可能かと
guest

0

自己解決

ログイン(マイページ)画面がindex.php?action1=mypageで合ったことが問題でした。
ちゃんと/mypageに飛ぶようにし、そこで認証処理を書けば無事google認証を実装することができました。
htmlの構造をきちんと理解できていなかったのが原因です。

回答くださった両ユーザーさん、こんな拙い質問に回答していただきありがとうございました。

投稿2019/09/23 03:44

knkceeeen

総合スコア12

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

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

0

indexに置かなければ良い話では・・・?

「ログインしなければ観れないページ、機能」があるかどうかによって実装は違ってきますが
「主はログインしなくても観れる」ということであれば「ログインしてなければログインページへリダイレクト」という処理を省くと良いです(実際のコードが提示されてないので実装は分からないですけど)
で、「ログインしなければ観れないページ、機能」についてのみ「ログインしていれば○○」「ログインしていなければ○○」という分岐を入れること。

投稿2019/09/17 19:58

編集2019/09/17 20:04
m.ts10806

総合スコア80875

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

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

knkceeeen

2019/09/17 23:18

失礼致しました。index以外に置くとエラーが出てしまったのですが、そちらを記入しておりませんでした。質問に追加しましたので宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問