捋一捋PHP第三方微信登錄

PC端掃二維碼登錄
先說步驟吧:
    微信網站登錄的文檔在https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=41ab5f757248bbbdcc2aad1a6d52b49fdc19579e&lang=zh_CN


    1.微信登錄請求,其實你可以當成是個url跳轉。https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
        參數 是否必須 說明
        appid 是 應用唯一標識
        redirect_uri 是 重定向地址,需要進行UrlEncode
        response_type 是 填code
        scope 是 應用授權作用域,擁有多個作用域用逗號(,)分隔,網頁應用目前僅填寫snsapi_login即可
        state 否 用於保持請求和回調的狀態,授權請求後原樣帶回給第三方。該參數可用於防止csrf×××(跨站請求僞造×××),建議第三方帶上該參數,可設置爲簡單的隨機數加session進行校驗
        把appid參數傳給開放平臺。鏈接頁面會顯示一個二維碼。
        
    2.用戶掃碼二維碼,掃碼成功後,會跳轉回你傳的域名地址。
        同時域名後面會帶有code和state參數。這個code則是我們需要拿到的鑰匙
        redirect_uri?code=CODE&state=STATE
    3.在redirect_uri跳轉的頁面或者控制器中,接收code值
        code每次會生成一個,用後即會銷燬,也就是你不能不停跳轉。
    4.通過appid、appSecret還有code值,請求open的access_token接口,獲得access_token。
        { 
            "access_token":"ACCESS_TOKEN", 
            "expires_in":7200, 
            "refresh_token":"REFRESH_TOKEN",
            "openid":"OPENID", 
            "scope":"SCOPE",
            "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
        }

        參數 說明
            access_token 接口調用憑證
            expires_in access_token接口調用憑證超時時間,單位(秒)
            refresh_token 用戶刷新access_token
            openid 授權用戶唯一標識
            scope 用戶授權的作用域,使用逗號(,)分隔
            unionid 當且僅當該網站應用已獲得該用戶的userinfo授權時,纔會出現該字段。

        這裏解釋一下,access_token是接口憑證,請求接口需要帶上,時間爲2個小時。openid是獲取用戶信息的參數,就如username。而unionid則是uid,用戶的唯一ID。
    5.拿到token和openid後,可以通過UserInfo接口獲得用戶數據。https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
        正確的Json返回結果:
        { 
            "openid":"OPENID",
            "nickname":"NICKNAME",
            "sex":1,
            "province":"PROVINCE",
            "city":"CITY",
            "country":"COUNTRY",
            "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
            "privilege":[
                "PRIVILEGE1", 
                "PRIVILEGE2"
            ],
            "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
        }

微信網頁授權(微信瀏覽器)即H5微信登錄

    網頁授權流程分爲四步:

        1、引導用戶進入授權頁面同意授權,獲取code

        2、通過code換取網頁授權access_token(與基礎支持中的access_token不同)

        3、如果需要,開發者可以刷新網頁授權access_token,避免過期

        4、通過網頁授權access_token和openid獲取用戶基本信息(支持UnionID機制)

            如果網頁授權作用域爲snsapi_userinfo,則此時開發者可以通過access_token和openid拉取用戶信息了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章