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

  1. 在 config/app 中添加内容。php

providers:Mbarwick83\Instagram\InstagramServiceProvider::class

aliases:'Instagram'=> Mbarwick83\Instagram\Facades\Instagram::class

  1. 在此项目中包含 '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 的值。