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

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

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

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

3776閲覧

Laravel Socialite Line ログイン 認証 Managerエラー

FigHy

総合スコア19

PHP

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

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/06/04 03:04

編集2018/06/04 04:52

度々質問失礼致します。

現在、laravelにてLineログイン認証機能を導入しています。
参考にしたサイト
https://github.com/SocialiteProviders/Line/blob/master/Provider.php

下記エラーで詰まっています...

Call to undefined method Laravel\Socialite\Two\User::setAccessTokenResponseBody()
<?php namespace app\Socialite; use Laravel\Socialite\Two\AbstractProvider; use Laravel\Socialite\Two\ProviderInterface; use Laravel\Socialite\Two\User; //use SocialiteProviders\Manager\OAuth2\AbstractProvider; //use SocialiteProviders\Manager\OAuth2\User; class LineProvider extends AbstractProvider implements ProviderInterface { /** * Unique Provider Identifier. */ const IDENTIFIER = 'LINE'; /** * The separating character for the requested scopes. * * @var string */ protected $scopeSeparator = ' '; /** * The scopes being requested. * * @var array */ protected $scopes = [ 'openid', 'profile', 'email', ]; /** * Get the authentication URL for the provider. * * @param string $state * * @return string */ protected function getAuthUrl($state) { return $this->buildAuthUrlFromBase( 'https://access.line.me/oauth2/v2.1/authorize', $state ); } /** * Get the token URL for the provider. * * @return string */ protected function getTokenUrl() { return 'https://api.line.me/oauth2/v2.1/token'; } /** * Get the raw user for the given access token. * * @param string $token * * @return array */ protected function getUserByToken($token) { $response = $this->getHttpClient()->get( 'https://api.line.me/v2/profile', [ 'headers' => [ 'Authorization' => 'Bearer '.$token, ], ]); return json_decode($response->getBody()->getContents(), true); } /** * Map the raw user array to a Socialite User instance. * * @param array $user * * @return \Laravel\Socialite\User */ protected function mapUserToObject(array $user) { return (new User())->setRaw($user)->map([ 'id' => $user['userId'] ?? $user['sub'] ?? null, 'nickname' => null, 'name' => $user['displayName'] ?? $user['name'] ?? null, 'avatar' => $user['pictureUrl'] ?? $user['picture'] ?? null, 'email' => $user['email'] ?? null, ]); } /** * Get the POST fields for the token request. * * @param string $code * * @return array */ protected function getTokenFields($code) { return array_merge(parent::getTokenFields($code), [ 'grant_type' => 'authorization_code', ]); } /** * @return \SocialiteProviders\Manager\OAuth2\User */ public function user() { if ($this->hasInvalidState()) { throw new InvalidStateException(); } $response = $this->getAccessTokenResponse($this->getCode()); if ($jwt = $response['id_token'] ?? null) { list($headb64, $bodyb64, $cryptob64) = explode('.', $jwt); $user = $this->mapUserToObject(json_decode(base64_decode($bodyb64), true)); } else { $user = $this->mapUserToObject($this->getUserByToken( $token = $this->parseAccessToken($response) )); } $this->credentialsResponseBody = $response; if ($user instanceof User) { $user->setAccessTokenResponseBody($this->credentialsResponseBody); } return $user->setToken($this->parseAccessToken($response)) ->setRefreshToken($this->parseRefreshToken($response)) ->setExpiresIn($this->parseExpiresIn($response)); } }

このsetAccessTokenResponseBodyメソッドは、参考にしたサイトのSocialite\ManagerのUser.phpにあるそうなのですが、
こちらには入っていません。
Socialiteに入っていないので、Managerをcomposerでインストールすればよろしいのでしょうか?....

configのapp.phpに記載しても、undefinedです。

'provider' => [ App\Socialite\SocialiteServiceProvider::class, \SocialiteProviders\Manager\ServiceProvider::class, ]

だいぶはまっていて、自分でもごっちゃになってきたので...
ぜひお助けいただければ幸いです><;

追記

Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\Models\User given, called in /Users/hxxx.yxxx/Ac/aclive/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 292

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

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

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

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

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

mix-peach

2018/06/04 03:24

見本通りに作るなら、クラスで継承している SocialiteProviders\Manager\●● がない状態(コメントアウトしてる)で正常に動作するとは思えませんし、必要なものは追加するしかないのでは? とりあえずやってみたらいいと思いますよ!
FigHy

2018/06/04 04:49

ありがとうございます!manager導入いたしました。
FigHy

2018/06/04 04:50

別の問題で追記したエラーの内容はわかりますでしょうか?gurdeの使い方が...
mix-peach

2018/06/04 07:59

Lineのログイン認証自体はできましたか? エラーは、login()に渡すパラメータが間違ってる(期待しているインスタンスではない=UserのModelを渡しているのが間違い)と言われているようですが・・・?
FigHy

2018/06/04 09:40

はい!ログイン認証自体はできていそうです。名前などUser情報は取得できています。
FigHy

2018/06/04 09:50

Auth::login($user, true); ←ここでこけてるっぽいです;;
guest

回答1

0

自己解決

こちらの記事を参考に行けました、ありがとうございます!http://djredhuman.hatenablog.com/entry/2016/04/15/155905

投稿2018/06/04 11:03

FigHy

総合スコア19

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

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

mix-peach

2018/06/05 01:10

解決したようで良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問