blaze0207

2461 经验值

@gcpark
改成上面 JellyBool 大大說的就可以了!!!
原來是我自己又犯了低級錯誤…

@感謝 JellyBool
真的改成這樣就可以了!!!
原來我又犯了低級錯誤…真是難找!

@感謝 JellyBool
真的改成這樣就可以了!!!
原來我又犯了低級錯誤.....真是難找!

這是我登入的 function 如下:

public function login($email, $password)
    {
        return $this->proxy('password', [
            'username' => $email,
            'password' => $password,
            'scope' => ''
        ]);
    }

應該是沒有錯,我有給 <font color="blue">grant_type</font>,這樣的話還有可能是哪邊的問題呢?

如問題所敘述,我在參照 JellyBoll 大大此教程,做到使用 proxy 代理這一步驟,會一直顯示pedning 狀態

看評論有說似乎不能用 php artisan serve 啟動 server 然後又自己呼叫 proxy 方法去要 token~~!

我現在做法是在本地用 Nginx 去指到 vue-spa 目錄,http://localhost:8084,這邊沒有問題,
然後我在去本地 vue-spa 目錄下使用 php artisan serve 來啟動,
然後我先用 Postman 打 Api http://localhost:8000/oauth/token 也有正確拿得到 token,
但是當我用網頁 http://localhost:8084/login 這邊輸入帳號密碼後登入,就會有以下錯誤:

exception:"GuzzleHttp\Exception\ClientException"

file:"/Users/hahn/Practice/vue-spa/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php"

line:113

message:"Client error: `POST http://localhost:8000/oauth/token` resulted in a `400 Bad Request` response:{"error":"unsupported_grant_type","message":"The authorization grant type is not supported by the authorization server." (truncated...)"

請問我問題出在哪呢?
下面是我 proxy function 的 code

public function proxy($grant_type, $data = [])
    {
        $data = array_merge($data, [
          'client_id' => env('PASSPORT_Client_ID'),
          'client_secret' => env('PASSPORT_Client_Secret'),
          'grant_type' => $grant_type,
        ]);

        $response = $this->http->post('http://localhost:8000/oauth/token', ['form-params' => $data]);
        .......
    }

還是在 Nginx 設定那邊要加什麼設定?
我第一次用 proxy 還在學習,還請各位大大多指導了~謝謝!

@JellyBool

我現在做法是在本地用 Nginx 去指到 vue-spa 目錄,http://localhost:8084,這邊沒有問題,
然後我在去本地 vue-spa 目錄下使用 php artisan serve 來啟動,
然後我先用 Postman 打 Api http://localhost:8000/oauth/token 也有正確拿得到 token,
但是當我用網頁 http://localhost:8084/login 這邊輸入帳號密碼後登入,就會有以下錯誤:

exception:"GuzzleHttp\Exception\ClientException"

file:"/Users/hahn/Practice/vue-spa/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php"

line:113

message:"Client error: `POST http://localhost:8000/oauth/token` resulted in a `400 Bad Request` response:{"error":"unsupported_grant_type","message":"The authorization grant type is not supported by the authorization server." (truncated...)"

請問我問題出在哪呢?
下面是我 proxy function 的 code

public function proxy($grant_type, $data = [])
    {
        $data = array_merge($data, [
          'client_id' => env('PASSPORT_Client_ID'),
          'client_secret' => env('PASSPORT_Client_Secret'),
          'grant_type' => $grant_type,
        ]);

        $response = $this->http->post('http://localhost:8000/oauth/token', ['form-params' => $data]);
        .......
    }

我也有此問題,我是用 <font color="red">php artisan serve</font> 啟動 server 的,也是在輸入完帳號密碼送出後就一直 pending,
請問這部分要怎麼處理呢?

我的 code 如下:

methods: {
      login() {
        let formdata = {
          client_id: '2',
          client_screct: 'tu6Sl2Da0I55hJo3IHS0UiOoAqEqLV9BDWgWfMLR',
          grant_type: 'password',
          scope: '',
          username: this.email,
          password: this.password
        }
        axios.post('/oauth/token', formdata)
            .then(res => {
              // JWTToken.setToken(res.data.access_token)
              console.log(res)
            })
      }
    }

<font color="blue">看起來有一樣嗎?我是照著教程寫的應該是沒錯</font>

我知道錯在哪裡了!!!!

我把 <font color="blue"> client_secret </font> 打成 <font color="red"> client_screct </font> 了

感謝 @hao 哈~~你救了我,犯了低級錯誤XD

請問要看哪裡才知道是不是用了 basicAuth 这里的 middleware?

我知道為什麼了,我在用 axios 打 api 的時候 沒有指定 formdata, 應該要改寫成 this.formdata

<font color="red">上述這樣還是不對,變成無法將資料送進 formparams,好吧我等待大大們的救援XD</font>