Laravel 中的 Instagram 登录问题
Instagram login issue in Laravel
我尝试通过 Instagram 登录,参考 mbarwick83/instagram。
登录时出现问题,只显示部分url:
https://api.instagram.com/oauth/authorize?response_type=code
然后去url,留言:
// 20171025142046
// https://www.instagram.com/oauth/authorize?response_type=code
{
"error_type": "OAuthException",
"code": 400,
"error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"
}
但我已经设置了 "client_id" 和 "redirect_uri"。
我该如何解决这个问题?谢谢。
循序渐进:
1.Install mbarwick83/instagram
composer require mbarwick83/instagram
- 在 config/app 中添加内容。php
providers:Mbarwick83\Instagram\InstagramServiceProvider::class
aliases:'Instagram'=> Mbarwick83\Instagram\Facades\Instagram::class
- 在此项目中包含 'Mbarwick83':
use Mbarwick83\Instagram\Instagram;
4.To 发布包配置文件
php artisan vendor:publish
5.Add 控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mbarwick83\Instagram\Instagram;
use App\Http\Requests;
class Mbarwick83Controller extends Controller
{
public function index(Instagram $instagram)
{
return $instagram->getLoginUrl();
}
public function callback(Request $request, Instagram $instagram)
{
$response = $instagram->getAccessToken($request->code);
// or $response = Instagram::getAccessToken($request->code);
if (isset($response['code']) == 400)
{
throw new \Exception($response['error_message'], 400);
}
return $response['access_token'];
}
}
6.Setting "client_id" 和 "redirect_uri":
路径:../vendor/mbarwick83/instagram/src/config
<?php
return [
'client_id' => env('0264df467XXXXXX'),
'client_secret' => env('6e5d9XXXXX4eeXX1'),
'redirect_uri' => env('http://localhost/login/Instagram/callback'),
'scopes' => 'basic public_content'
];
7.Setting../routes/web.php
Route::get('login/Instagram', 'Mbarwick83Controller@index');
Route::get('login/Instagram/callback', 'Mbarwick83Controller@callback');
8.Setting../.env
INSTAGRAM_CLIENT_ID=0264df467XXXXXX
INSTAGRAM_CLIENT_SECRET=6e5d9XXXXX4eeXX1
INSTAGRAM_CALLBACK_URL=http://localhost/login/Instagram/callback
更改配置文件,删除 env 函数
return [
'client_id' => '0264df467XXXXXX',
'client_secret' => '6e5d9XXXXX4eeXX1',
'redirect_uri' => 'http://localhost/login/Instagram/callback',
'scopes' => 'basic public_content'
];
您使用的 env()
有误,它需要键名,而不是值。 (尽管您可以将 "default value" 设置为第二个参数)
<?php
return [
'client_id' => env('INSTAGRAM_CLIENT_ID'),
'client_secret' => env('INSTAGRAM_CLIENT_SECRET'),
'redirect_uri' => env('INSTAGRAM_CALLBACK_URL'),
'scopes' => 'basic public_content'
];
env('INSTAGRAM_CLIENT_ID')
将从您的 .env
文件中获取 INSTAGRAM_CLIENT_ID
的值。
我尝试通过 Instagram 登录,参考 mbarwick83/instagram。
登录时出现问题,只显示部分url:
https://api.instagram.com/oauth/authorize?response_type=code
然后去url,留言:
// 20171025142046
// https://www.instagram.com/oauth/authorize?response_type=code
{
"error_type": "OAuthException",
"code": 400,
"error_message": "You must include a valid client_id, response_type, and redirect_uri parameters"
}
但我已经设置了 "client_id" 和 "redirect_uri"。
我该如何解决这个问题?谢谢。
循序渐进:
1.Install mbarwick83/instagram
composer require mbarwick83/instagram
- 在 config/app 中添加内容。php
providers:Mbarwick83\Instagram\InstagramServiceProvider::class
aliases:'Instagram'=> Mbarwick83\Instagram\Facades\Instagram::class
- 在此项目中包含 'Mbarwick83':
use Mbarwick83\Instagram\Instagram;
4.To 发布包配置文件
php artisan vendor:publish
5.Add 控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mbarwick83\Instagram\Instagram;
use App\Http\Requests;
class Mbarwick83Controller extends Controller
{
public function index(Instagram $instagram)
{
return $instagram->getLoginUrl();
}
public function callback(Request $request, Instagram $instagram)
{
$response = $instagram->getAccessToken($request->code);
// or $response = Instagram::getAccessToken($request->code);
if (isset($response['code']) == 400)
{
throw new \Exception($response['error_message'], 400);
}
return $response['access_token'];
}
}
6.Setting "client_id" 和 "redirect_uri":
路径:../vendor/mbarwick83/instagram/src/config
<?php
return [
'client_id' => env('0264df467XXXXXX'),
'client_secret' => env('6e5d9XXXXX4eeXX1'),
'redirect_uri' => env('http://localhost/login/Instagram/callback'),
'scopes' => 'basic public_content'
];
7.Setting../routes/web.php
Route::get('login/Instagram', 'Mbarwick83Controller@index');
Route::get('login/Instagram/callback', 'Mbarwick83Controller@callback');
8.Setting../.env
INSTAGRAM_CLIENT_ID=0264df467XXXXXX
INSTAGRAM_CLIENT_SECRET=6e5d9XXXXX4eeXX1
INSTAGRAM_CALLBACK_URL=http://localhost/login/Instagram/callback
更改配置文件,删除 env 函数
return [
'client_id' => '0264df467XXXXXX',
'client_secret' => '6e5d9XXXXX4eeXX1',
'redirect_uri' => 'http://localhost/login/Instagram/callback',
'scopes' => 'basic public_content'
];
您使用的 env()
有误,它需要键名,而不是值。 (尽管您可以将 "default value" 设置为第二个参数)
<?php
return [
'client_id' => env('INSTAGRAM_CLIENT_ID'),
'client_secret' => env('INSTAGRAM_CLIENT_SECRET'),
'redirect_uri' => env('INSTAGRAM_CALLBACK_URL'),
'scopes' => 'basic public_content'
];
env('INSTAGRAM_CLIENT_ID')
将从您的 .env
文件中获取 INSTAGRAM_CLIENT_ID
的值。