laravel社會化登入 iframe微信網頁登入失敗的問題

chowjiawei發表於2022-01-06

問題介紹

我的網站 是前後端分離開發的 原本的流程為 前端到我的網站上 我的社會化登入包跳轉到微信網頁登入 但是這個還得跳轉到微信的網站去 就不好看 想著前端iframe我的網站上的微信圖片即可 但是這樣子 回撥就會報錯 查詢了很多資料 還有微信開發論壇的人 都沒有什麼答案 大部分都是認為 這是微信的問題 今天有空了 來查了些資料 實在是無從入手 然後想看下社會化登入包 有沒有什麼遺漏掉的內容 果然 有個api專用的方法 讓iframe也可以正常跳轉

期待效果

類似於酷狗的這種 專門把微信登入的二維碼放到前臺 而不是去微信官網 太醜了
laravel社會化登入  iframe微信網頁登入失敗的問題

原效果

laravel社會化登入  iframe微信網頁登入失敗的問題

前端iframe程式碼:
laravel社會化登入  iframe微信網頁登入失敗的問題

失敗 無法通過iframe進行微信授權

laravel社會化登入  iframe微信網頁登入失敗的問題

原始碼:

 public function wechatWeb()
    {
        return Socialite::driver('wechat_web')->redirect();
    }

    public function wechatWebLogin(UserService $service)
    {
        $user = Socialite::driver('wechat_web')->user();
    }

支援iframe:

 public function wechatWeb()
    {
        return Socialite::driver('wechat_web')->redirect();
    }

    public function wechatWebLogin(UserService $service)
    {
        $user = Socialite::driver('wechat_web')->stateless()->user();
    }

在回撥內的方法 多加個 ->stateless()就可以讓iframe我的網頁回撥也變得正常

文件內是這麼描述的:
laravel社會化登入  iframe微信網頁登入失敗的問題

成功 通過iframe進行微信授權結果圖:

laravel社會化登入  iframe微信網頁登入失敗的問題

總結:

  • 如果可以接受去微信官方掃描 然後跳轉的 可以不加stateless
  • 如果是前後端分離 並且不接受去微信官方掃描 需要在自己的網頁嵌入iframe的需求 加stateless功能就會正常

希望對大家有點幫助

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章