iT邦幫忙

0

Laravel 加入 socialiteproviders/Line 要如何使用Line 要求的"參數"

請求大大指點迷津:
我從某範例中學到了加入 socialiteproviders/QQ的方法,但我需要的是Line,經如QQ方法泡製後得到結論如下:
https://ithelp.ithome.com.tw/upload/images/20200224/20121754TYtbVKV2aJ.png
於是網路爬文以及@firecold 大大的提醒找到了說明文:https://socialiteproviders.netlify.com/providers/line.html
經按照說明文指示設置步驟如下:

1

composer require socialiteproviders/line

2 修改app/Providers/EventServiceProvider

...
class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'SocialiteProviders\Manager\SocialiteWasCalled' => [
            'SocialiteProviders\QQ\QqExtendSocialite@handle',
        ],

        \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            // add your listeners (aka providers) here
            'SocialiteProviders\\Line\\LineExtendSocialite@handle',
        ],
    ];
...

3 .env中增加Line Developer 登录的key和秘钥

Line_KEY=164*****708
Line_SECRET=790f651*******ffb****80
Line_REDIRECT_URI=http://localhost:8000/auth/Line/callback

4 修改 config/services.php

....
'Line' => [
        'client_id' => env('Line_KEY'),
        'client_secret' => env('Line_SECRET'),
        'redirect' => env('Line_REDIRECT_URI'),
    ],
....

5 php artisan make:controller Auth/SocialitesLineController

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Socialite;

class SocialitesLineController extends Controller
{
    //跳转到Line授权页面
    public function line()
    {
        return Socialite::with('line')->redirect();
    }

    //用户授权后,跳转回来
    public function callback()
    {
        $info = Socialite::driver('line')->user();
        dump($info);
    }
}

6 配置路由

Route::namespace('Auth')->prefix('auth/line')->group(function () {
    Route::get('/', 'SocialitesLineController@line');
    Route::get('callback', 'SocialitesLineController@callback');
});

7 不知道哪裡錯了?點按連結後一直出現 "400 Bad Request"

求解!希望有大大指點,謝謝!

8 補圖: Line develop 返回地址設置

https://ithelp.ithome.com.tw/upload/images/20200224/20121754Xc9IOXq157.png

9 補圖-2 https://ithelp.ithome.com.tw/upload/images/20200224/20121754PJAlugNn1C.png

看更多先前的討論...收起先前的討論...
firecold iT邦新手 1 級 ‧ 2020-02-24 15:14:50 檢舉
你有換掉http://localhost:8000/ 這個嘛?
沒有 (需要換?)
因為我再開發環境,所以我將 http://localhost:8000/auth/line/callback 寫在 Line developer 帳戶裡面,如補圖:
你知道 localhost 的意思嘛?
在line server的本機跟你的本機是不同一台機器的。
昏倒中。
firecold iT邦新手 1 級 ‧ 2020-02-24 17:16:54 檢舉
換成真實的try看看吧
localhost快速開法可以用https://ngrok.com/
前輩!
我有看一下"400 Bad Request "的說明,以為的是我送給Line的請求不符合Line的要求所以給"400 Bad Request"
我猜想的是因為我的請求:
https://access.line.me/oauth2/v2.1/authorize?client_id=1560745213&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fauth%2FLine%2Fcallback&scope=openid+profile+email&response_type=code&state=5dZHOUfzPZ6TzD4tKh62TdxGDltV7ibHxa7nyb4n

不符合Line的要求,如 說明文中範例中所述:
https://access.line.me/dialog/oauth/weblogin?response_type=code&client_id=12345&redirect_uri=https%3A%2F%2Fsample.com%2Fauth&state=123abc

說明文:
https://developers.line.biz/en/docs/line-login/integrate-line-login-v2/#getting-an-authorization-code
有提到需要參數:
response_type、client_id、redirect_uri、state
但是我的參數中只有.env 中設的 LINE_KEY、LINE_SECRET、LINE_REDIRECT_URI

因此我以為需要另外設法提供正確參數給Line,因而提問求解"正確提供參數的方法"。

也許是想偏了!還望前輩指點一下!
PS:localhost 是本機 我知道 Line 的主機也當然是不同一台,但是現在 "400 Bad Request " 的問題點,還沒有走到我在 Line 上設的 "http://localhost:8000/auth/qq/callback" 不是嗎?

另外附上我從 SocialitesLineController 中 使用
$line = Socialite::with('line')->redirect();
dd($line);
之截圖如上(補圖2 )請前輩參考並指點 謝謝!
現在已經將 Localhost:8000 改用 ngrok, 網址如下:(點按後:是dd();的結果
https://22027532.ngrok.io
firecold iT邦新手 1 級 ‧ 2020-02-25 15:21:50 檢舉
文件中有提到#Overriding a config
可以設置參數 你看一下
好的,我研究一下,謝謝!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答