oriceon/oauth-5-laravel을 사용한 Laravel 5의 OAuth 인증
5489 단어 PHPoauth-5-laravelOAuth라라벨
소개
Laravel5는 Laravel4에 비해 호환성이 없다고 해도 좋을 정도로 많이 변하고 있습니다.
이번에는 시험에 지금까지 사용하고 있던 artdarek/oauth-4-laravel의 OAuth 라이브러리를 사용하여 Laravel5에 설치해 보았습니다.
그리고! 그 전에, 앞서 말했듯이 Laravel5와 Laravel4의 호환성은 없다고 해도 좋을 정도로 다르기 때문에, 그렇게 간단하게 인스톨 할 수 있을 것은 없습니다. 먼저 artdarek/oauth-4-laravel의 issue를 Laravel 5
라는 키워드로 검색하여 어떤 문제가 있었는지 알아보았습니다.
왔어! ! ! 역시 그런 이슈가 있습니다. 해외에서는 L5
를 Laravel 5
라고 가리킵니다.
그럼 바로 첫 번째 이슈를 읽어 보겠습니다. 분명히 oriceon이 이미 oauth-5-laravel 용 래리 브래리를 만든 것 같아서 즉시 시도해 보겠습니다. (지금은 이 리포는 pull-request 대기합니다만, 이것을 merge해 버리면 아마 Laravel 4의 대응은 사라져 버리는 것이 아닌가)
Composer update
oriceon씨가 만든 Laravel 5에 대응한 OAuth의 리포지토리입니다만, 2015년 2월 11일에 만든 것답게, 완성된 리포지토리입니다.
우선 이 리포지토리는 packagist에 등록되어 있지 않은 것이므로 github에서 얻을 수밖에 없습니다. 이 때 composer.json은 require 이외에 repository를 추가해야합니다. 그리고 master 브랜치를 clone하므로 버전은 dev-master가됩니다.
"require": {
"laravel/framework": "5.0.*",
"oriceon/oauth-5-laravel":"dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/oriceon/oauth-5-laravel"
}
],
그런 다음 composer를 업데이트합니다.
composer update
app.php에 패키지 등록
업데이트가 완료되면 artdarek/oauth-4-laravel과 마찬가지로 config/app.php 파일을 편집하여 패키지를 등록합니다.
'providers' => array(
// ...
'Artdarek\OAuth\OAuthServiceProvider'
)
// ....
'aliases' => array(
// ...
'OAuth' => 'Artdarek\OAuth\Facade\OAuth',
)
client_id 및 client_secret 설정
Laravel 5에서는 다른 vendor 명령을 준비했습니다. 우선, 초기 파일을 생성해 주므로 다음의 vendor 커멘드를 실행.
php artisan vendor:publish
그리고 config/oauth-5-laravel.php
에 다음과 같은 초기 설정 파일이 생성됩니다.
<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
/**
* Facebook
*/
'Facebook' => [
'client_id' => '',
'client_secret' => '',
'scope' => [],
],
]
];
아무래도 좋은 이야기입니다만, 배열을 []
로 표현하는 것은 매우 Laravel 5인 것 같습니다.
여기에서 Laravel 5의 묘미입니다. 다음과 같이 설정합시다. 예제에서는 Google을 사용하는 경우 Facebook을 Google로 변경합니다.
<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
'Google' => array(
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'scope' => ['userinfo_email', 'userinfo_profile'],
),
]
];
Laravel 5에서는 환경 변수로 비밀 정보를 관리합니다. 그렇게 함으로써 github에 비밀 정보를 푸시하지 않아도 개발 환경인지 프로덕션 환경인지에 따라 사용하는 비밀 정보를 자동으로 관리해 줍니다.
그런 다음 프로젝트 루트의 .env
파일을 열고 (만약 .env.example이면 .env로 파일 이름을 변경하십시오) 다음 두 줄을 늘릴 수 있습니다. 단, my_google_client_id
와 my_google_client_secret
를 올바른 것으로 바꾸어 주세요.
GOOGLE_CLIENT_ID=my_google_client_id
GOOGLE_CLIENT_SECRET=my_google_client_secret
마지막으로 .env 파일을 github에 푸시하지 않도록 .gitignore에 .env를 추가하십시오.
실행하자.
리포지토리로 굴러가는 샘플 스니펫을 시도했습니다.
public function loginWithGoogle(Request $request)
{
// get data from request
$code = $request->get('code');
// get google service
$googleService = \OAuth::consumer('Google');
// check if code is valid
// if code is provided get user data and sign in
if ( ! is_null($code))
{
// This was a callback request from google, get the token
$token = $googleService->requestAccessToken($code);
// Send a request with it
$result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);
$message = 'Your unique Google user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
echo $message. "<br/>";
//Var_dump
//display whole array.
dd($result);
}
// if not ask for permission first
else
{
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return redirect((string)$url);
}
}
Laravel 5에서는 global의 namespace를 그만두었으므로, OAuth 클래스를 사용할 때 반드시 \
를 붙여 사용하는 것입니다.
Reference
이 문제에 관하여(oriceon/oauth-5-laravel을 사용한 Laravel 5의 OAuth 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/edisonthk/items/b32be58d9b1a96650271
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
oriceon씨가 만든 Laravel 5에 대응한 OAuth의 리포지토리입니다만, 2015년 2월 11일에 만든 것답게, 완성된 리포지토리입니다.
우선 이 리포지토리는 packagist에 등록되어 있지 않은 것이므로 github에서 얻을 수밖에 없습니다. 이 때 composer.json은 require 이외에 repository를 추가해야합니다. 그리고 master 브랜치를 clone하므로 버전은 dev-master가됩니다.
"require": {
"laravel/framework": "5.0.*",
"oriceon/oauth-5-laravel":"dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/oriceon/oauth-5-laravel"
}
],
그런 다음 composer를 업데이트합니다.
composer update
app.php에 패키지 등록
업데이트가 완료되면 artdarek/oauth-4-laravel과 마찬가지로 config/app.php 파일을 편집하여 패키지를 등록합니다.
'providers' => array(
// ...
'Artdarek\OAuth\OAuthServiceProvider'
)
// ....
'aliases' => array(
// ...
'OAuth' => 'Artdarek\OAuth\Facade\OAuth',
)
client_id 및 client_secret 설정
Laravel 5에서는 다른 vendor 명령을 준비했습니다. 우선, 초기 파일을 생성해 주므로 다음의 vendor 커멘드를 실행.
php artisan vendor:publish
그리고 config/oauth-5-laravel.php
에 다음과 같은 초기 설정 파일이 생성됩니다.
<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
/**
* Facebook
*/
'Facebook' => [
'client_id' => '',
'client_secret' => '',
'scope' => [],
],
]
];
아무래도 좋은 이야기입니다만, 배열을 []
로 표현하는 것은 매우 Laravel 5인 것 같습니다.
여기에서 Laravel 5의 묘미입니다. 다음과 같이 설정합시다. 예제에서는 Google을 사용하는 경우 Facebook을 Google로 변경합니다.
<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
'Google' => array(
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'scope' => ['userinfo_email', 'userinfo_profile'],
),
]
];
Laravel 5에서는 환경 변수로 비밀 정보를 관리합니다. 그렇게 함으로써 github에 비밀 정보를 푸시하지 않아도 개발 환경인지 프로덕션 환경인지에 따라 사용하는 비밀 정보를 자동으로 관리해 줍니다.
그런 다음 프로젝트 루트의 .env
파일을 열고 (만약 .env.example이면 .env로 파일 이름을 변경하십시오) 다음 두 줄을 늘릴 수 있습니다. 단, my_google_client_id
와 my_google_client_secret
를 올바른 것으로 바꾸어 주세요.
GOOGLE_CLIENT_ID=my_google_client_id
GOOGLE_CLIENT_SECRET=my_google_client_secret
마지막으로 .env 파일을 github에 푸시하지 않도록 .gitignore에 .env를 추가하십시오.
실행하자.
리포지토리로 굴러가는 샘플 스니펫을 시도했습니다.
public function loginWithGoogle(Request $request)
{
// get data from request
$code = $request->get('code');
// get google service
$googleService = \OAuth::consumer('Google');
// check if code is valid
// if code is provided get user data and sign in
if ( ! is_null($code))
{
// This was a callback request from google, get the token
$token = $googleService->requestAccessToken($code);
// Send a request with it
$result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);
$message = 'Your unique Google user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
echo $message. "<br/>";
//Var_dump
//display whole array.
dd($result);
}
// if not ask for permission first
else
{
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return redirect((string)$url);
}
}
Laravel 5에서는 global의 namespace를 그만두었으므로, OAuth 클래스를 사용할 때 반드시 \
를 붙여 사용하는 것입니다.
Reference
이 문제에 관하여(oriceon/oauth-5-laravel을 사용한 Laravel 5의 OAuth 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/edisonthk/items/b32be58d9b1a96650271
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
'providers' => array(
// ...
'Artdarek\OAuth\OAuthServiceProvider'
)
// ....
'aliases' => array(
// ...
'OAuth' => 'Artdarek\OAuth\Facade\OAuth',
)
Laravel 5에서는 다른 vendor 명령을 준비했습니다. 우선, 초기 파일을 생성해 주므로 다음의 vendor 커멘드를 실행.
php artisan vendor:publish
그리고
config/oauth-5-laravel.php
에 다음과 같은 초기 설정 파일이 생성됩니다.<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
/**
* Facebook
*/
'Facebook' => [
'client_id' => '',
'client_secret' => '',
'scope' => [],
],
]
];
아무래도 좋은 이야기입니다만, 배열을
[]
로 표현하는 것은 매우 Laravel 5인 것 같습니다.여기에서 Laravel 5의 묘미입니다. 다음과 같이 설정합시다. 예제에서는 Google을 사용하는 경우 Facebook을 Google로 변경합니다.
<?php
return [
/*
|--------------------------------------------------------------------------
| oAuth Config
|--------------------------------------------------------------------------
*/
/**
* Storage
*/
'storage' => 'Session',
/**
* Consumers
*/
'consumers' => [
'Google' => array(
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'scope' => ['userinfo_email', 'userinfo_profile'],
),
]
];
Laravel 5에서는 환경 변수로 비밀 정보를 관리합니다. 그렇게 함으로써 github에 비밀 정보를 푸시하지 않아도 개발 환경인지 프로덕션 환경인지에 따라 사용하는 비밀 정보를 자동으로 관리해 줍니다.
그런 다음 프로젝트 루트의
.env
파일을 열고 (만약 .env.example이면 .env로 파일 이름을 변경하십시오) 다음 두 줄을 늘릴 수 있습니다. 단, my_google_client_id
와 my_google_client_secret
를 올바른 것으로 바꾸어 주세요.GOOGLE_CLIENT_ID=my_google_client_id
GOOGLE_CLIENT_SECRET=my_google_client_secret
마지막으로 .env 파일을 github에 푸시하지 않도록 .gitignore에 .env를 추가하십시오.
실행하자.
리포지토리로 굴러가는 샘플 스니펫을 시도했습니다.
public function loginWithGoogle(Request $request)
{
// get data from request
$code = $request->get('code');
// get google service
$googleService = \OAuth::consumer('Google');
// check if code is valid
// if code is provided get user data and sign in
if ( ! is_null($code))
{
// This was a callback request from google, get the token
$token = $googleService->requestAccessToken($code);
// Send a request with it
$result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);
$message = 'Your unique Google user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
echo $message. "<br/>";
//Var_dump
//display whole array.
dd($result);
}
// if not ask for permission first
else
{
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return redirect((string)$url);
}
}
Laravel 5에서는 global의 namespace를 그만두었으므로, OAuth 클래스를 사용할 때 반드시 \
를 붙여 사용하는 것입니다.
Reference
이 문제에 관하여(oriceon/oauth-5-laravel을 사용한 Laravel 5의 OAuth 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/edisonthk/items/b32be58d9b1a96650271
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public function loginWithGoogle(Request $request)
{
// get data from request
$code = $request->get('code');
// get google service
$googleService = \OAuth::consumer('Google');
// check if code is valid
// if code is provided get user data and sign in
if ( ! is_null($code))
{
// This was a callback request from google, get the token
$token = $googleService->requestAccessToken($code);
// Send a request with it
$result = json_decode($googleService->request('https://www.googleapis.com/oauth2/v1/userinfo'), true);
$message = 'Your unique Google user id is: ' . $result['id'] . ' and your name is ' . $result['name'];
echo $message. "<br/>";
//Var_dump
//display whole array.
dd($result);
}
// if not ask for permission first
else
{
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return redirect((string)$url);
}
}
Reference
이 문제에 관하여(oriceon/oauth-5-laravel을 사용한 Laravel 5의 OAuth 인증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/edisonthk/items/b32be58d9b1a96650271텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)