国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

angular.js - Angular開發(fā)的單頁面應(yīng)用,如何正確地實現(xiàn)在微信里的網(wǎng)頁授權(quán)和調(diào)用js sdk
phpcn_u1582
phpcn_u1582 2017-05-15 17:12:10
0
5
1011

一個微信公眾號的外鏈網(wǎng)頁,使用angular做成了單頁應(yīng)用,目前碰到了 微信網(wǎng)頁授權(quán) 和 調(diào)用 js sdk 的問題


微信授權(quán)

據(jù)我所目前所知,調(diào)用了微信授權(quán)后,單頁應(yīng)用的入口 url 會長成這樣(假定域名為:example.com):

  • http://example.com?code=aaabbb/#/home

或者(啟用了html5 mode) 長成這樣:

  • http://example.com/home?code=aaabbb

?code=aaabbb, 是微信授權(quán)后重定向時填充的,有了這個才能進(jìn)一步去獲取用戶信息,參見 微信開發(fā)文檔 > 獲取code

至此,還不會出現(xiàn)問題


調(diào)用 js sdk

由于Android微信客戶端不支持pushState的H5新特性,url②廢棄(親測,確實不能通過驗證),所以入口url是這樣:

  • http://example.com?code=aaabbb/#/home

現(xiàn)在問題來了,如果沒有?code=aaabbb就能通過簽名驗證, 然后成功調(diào)用 js sdk,但實際情況是:如果需要授權(quán)?code=aaabbb必然存在,簽名驗證必定失敗。那么到底如何做到授權(quán)和調(diào)用sdk均可用???

我目前的想法和做法是:微信授權(quán)重定向到http://example.com?code=aaabbb/#/home后,拿到code,然后再location.href = http://example.com/#/home。這樣做是能拿到用戶信息,并且成功調(diào)用sdk,但問題是每次進(jìn)入應(yīng)用,會刷新兩次,這樣用戶體驗極差,而且有強(qiáng)迫癥的我也接受不了。

請教各位給個靠譜的方案


phpcn_u1582
phpcn_u1582

全部回復(fù)(5)
黃舟

純前端是沒法實現(xiàn)了,只能將授權(quán)回調(diào)頁面域名配置到后臺服務(wù)器,再由后臺重定向

PHPzhong

可以用過indexOf()取出code值

var url  = 'http://example.com?code=aaabbb/#/home';
var n = url.indexOf('code=')+5;
var m = url.indexOf('/#');
var code = url.substr(n, m-1);

這樣就能拿到code值

phpcn_u1582

純前端沒法實現(xiàn),恰巧最近我做過類似的項目,也是用的 angularjs,通過 angular-route.js 實現(xiàn)單頁面程序。

在單頁面程序 (index.html)中 通過 ajax 調(diào)用后臺 接口,
如果成功返回:{status:true,...}
如果未登錄失敗返回:{status:falst,next:'login',errmsg:'錯誤'}
其他錯誤返回:{status:falst,next:'接下來的操作',errmsg:'錯誤'}

如果返回狀態(tài) result.status==false,result.next=='login':

case "login":
    $http.get($api.callback($api.login)).success(function(val){
        //通過后臺返回 授權(quán)地址
        location.href = val.loginUrl;
    });
    return;

授權(quán)跳轉(zhuǎn)到 wxlogin.php,驗證登錄成功后,設(shè)置SESSION后,跳轉(zhuǎn)到 單頁面程序(index.html)
接下來程序會繼續(xù)調(diào)用接口,因為已經(jīng) 登錄了,所以 返回:{status:true,...}

某草草

樓主最終還是location.href=""?么

洪濤

這個應(yīng)該怎么解決了,樓主發(fā)下答案來解決一下,我準(zhǔn)備也用vue開發(fā)微信

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板