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

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

ただいまの
回答率

90.34%

サーバー上でのgoogleログインについて

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 211

rele_96

score 4

oauth認証でグーグルのログインについて
localhostからのログイン認証に成功したのですが、サーバー上でのグーグルログインができません
ソースコードはこちらです

コード  <?php
require_once("../dbconnect.php");
dbConnect(); 

$AUTH_URL = 'https://accounts.google.com/o/oauth2/auth';
$params = array(
  'client_id' => '',
  'redirect_uri' => '',
  'scope' => 'profile email',
  'response_type' => 'code',
  'access_type' => 'offline'
);
header("Location: " . $AUTH_URL. '?' . http_build_query($params));
?>
<?php
// データベース接続
require_once("../dbconnect.php");
dbConnect(); 

// アプリケーション設定
define('CONSUMER_KEY', '');
define('CONSUMER_SECRET', '');
define('CALLBACK_URL', '');

// URL
define('TOKEN_URL', 'https://accounts.google.com/o/oauth2/token');
define('INFO_URL', 'https://www.googleapis.com/oauth2/v1/userinfo');

$params = array(
    'code' => $_GET['code'],
    'grant_type' => 'authorization_code',
    'redirect_uri' => CALLBACK_URL,
    'client_id' => CONSUMER_KEY,
    'client_secret' => CONSUMER_SECRET,
);

// POST送信
$options = array('http' => array(
    'method' => 'POST',
    'content' => http_build_query($params)
));

// アクセストークンの取得
$res = file_get_contents(TOKEN_URL, false, stream_context_create($options));

// レスポンス取得
$token = json_decode($res, true);
if(isset($token['error'])){
    echo 'エラー発生';
    exit;
}

$access_token = $token['access_token'];

$params = array('access_token' => $access_token);

// ユーザー情報取得
$res = file_get_contents(INFO_URL . '?' . http_build_query($params));

$result = json_decode($res, true);
?>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" href="style.css">
    <title>Googleログイン</title>
</head>
<header>
    <h1>TravelSupport</h1>
    <h2>ホーム</h2>
</header>
<body>
    <h3>プロフィール画像</h3>
        <img src="<?php echo $result['picture']; ?>" width="80">
    <h3>ユーザー情報</h3>
    <table>
        <tr><td>ID</td><td><?php echo $result['id']; ?></td></tr>
        <tr><td>ユーザー名</td><td><?php echo $result['name']; ?></td></tr>
        <tr><td>苗字</td><td><?php echo $result['family_name']; ?></td></tr>
        <tr><td>名前</td><td><?php echo $result['given_name']; ?></td></tr>
        <tr><td>Email</td><td><?php echo $result['email']; ?></td></tr>
    </table>
</body>
</html>

redirect_uriはipアドレスにしています。
サーバー上でのログインを実装したいです。
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • CHERRY

    2018/11/26 09:58

    「できません」だけでは、どのような状態かわかりません。どの時点まで動作するのでしょうか? Webブラウザで、エラーが出ていたりしませんか? 開発者ツールのコンソール等も確認してください。

    キャンセル

  • m.ts10806

    2018/11/26 09:59

    「サーバー」とは?レスポンス取得されてるのであれば失敗の際にエラーコードやエラー原因なども返ってきてると思うのでレスポンスの中身を確認してみてください

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る