勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

PHPでソーシャル(SNS)ログインする方法2018

      2018/06/12

久しぶりにソーシャル(SNS)ログインを実装する機会があった。以前に対応方法を書いておいたのでそのままいけるかと思ったが、所々躓いたので2018年版として新たにメモ。尚、使用するSNSはFacebook / Twitter /  Googleとする。

 

opauthをダウンロード

以下よりダウンロードする。

https://github.com/opauth/opauth

001

ディレクトリとURLは以下と想定する。

/ドキュメントルート/user/login

http://test.com/user/login

 

ファイルの設置

example内のファイルとlibディレクトリをloginディレクトリに設置する。

 

/lib/Opauth/Strategyディレクトリ内に利用したいSNSのディレクトリを作成する。

 

各ディレクトリには以下ページからzipファイルをダウンロードしたものを解凍してアップする。

http://www.opauth.org/

 

ファイルの編集と設定

loginディレクトリのopauth.conf.phpを編集する。

  • security_saltは適当な英数字
  • Strategyは利用したいSNSのAppKey等
  • pathは今回だと'path' => '/user/login/',

loginディレクトリのindex.phpを編集する。

 

loginディレクトリのcallback.phpを編集する。

 

Noticeエラーが出たが原因が分からないので/lib/Opauth/Opauth.phpの124行目をコメントアウト。

 

Twitter設定

https://apps.twitter.com/

上記ページからログインし、「Create New App」をクリックし次の画面で各項目を入力する。

003

WebsiteとCallback URLsは今回だと「http://test.com/user/login」を入れておけばよい。

004

作成成功するとページ遷移するのでConsumer Key(API Key)の右にある「manage keys and access tokens」リンクをクリックするとAPI KeyとAPI Secretが取得できる。

005

 

006

これをopauth.conf.phpに追記する。

 

またtwitterのSettingタブ内にある下部の「Enable Callback Locking (It is recommended to enable callback locking to ensure apps cannot overwrite the callback url)」のチェックを外して「Update Settings」で上書きしておく。

loginディレクトリのindex.phpを編集する。

クリックするとTwitterのソーシャルログインができるようになっているはず。

 

Google設定

https://console.developers.google.com/apis/library

上記ページよりログインし、プロジェクトを新規作成する。

007

プロジェクト名を入れ、組織名部分はそのままで作成をクリックする。

008

ダッシュボードの選択をクリックし、先ほど作成したプロジェクトを選択する。

009

認証情報→OAuth同意画面に進み、各項目を入力する。サービス名だけで他は省略可能。

010

認証情報タブで認証情報を作成ボタンをクリック、OAuth クライアント IDを選択する。

011

アプリケーションの種類は「ウェブアプリケーション」、名前は適宜入力、承認済みのリダイレクトURIは今回の場合だと「http://test.com/user/login/google/oauth2callback」で入力し、作成する。

012

完了するとクライアントIDとクライアントシークレットが発行されるのでopauth.conf.phpに追記する。

013

 

loginディレクトリのindex.phpを編集する。

クリックするとGoogleのソーシャルログインができるようになっているはず。

 

Facebook設定

https://developers.facebook.com

上記ページよりログインし、マイアプリ→新しいアプリを追加に進む。

014

表示名を入力してアプリを作成する。

015

ダッシュボードからFacebookログインで設定をクリックする。

018

Facebookログイン→設定に進み、有効なOAuthリダイレクトURIを入れる。今回の場合だと「http://test.com/user/login/facebook/int_callback」になる。他はそのままで保存する。

019

設定→ベーシックに進みアプリドメイン、プライバシーポリシーのURL、利用規約のURL、カテゴリを選択して保存する。

017

ページ上部のステータスをオンに変更する。

020

設定→ベーシックに進みアプリIDとapp secretをopauth.conf.phpに追記する。

 

loginディレクトリのindex.phpを編集する。

クリックするとfacebookのソーシャルログインができるようになっているはず。

 - PHP

  関連記事

PHPで改行を含むデータをCSV化

PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...

PHPでディレクトリの作成と削除

PHPでユーザID毎にディレクトリを作成しその中にキャッシュファイルを格納したか ...

pdfからjpg/jpegへ出来るだけ劣化させずに変換

やりたかった事はpdfからjpg画像への変換。 imagemagick使えばすぐ ...

同一サーバの別ディレクトリでセッション振り分け

同じサーバ内にmemberとownerの別ディレクトリがあり、それぞれにsess ...

CodeIgniterのバージョンの調べ方

CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...

PHPで他サーバにファイルをアップロードする2

formで画像を送信した後、他サーバにファイルをアップロードしたかった。以前はP ...

PHPで配列じゃないものに対してソート

PHP Warning:  sort() expects parameter 1 ...

PHPでeval時のエラー

eval()'d code on line みたいなエラーが出てた。 よそのシス ...

PHPのカレンダー関数

カレンダー関数で使えるかもしれないものをメモ。 ■cal_days_in_mon ...