找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 6515|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

QQ第三方登錄程序編寫方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:90014 發(fā)表于 2015-9-14 13:17 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
    序:
    自從8.12天津?yàn)I海爆炸到現(xiàn)在一直沒上班。閑的手癢癢,由于逃難的時(shí)候沒有把筆記本帶出來。所以自己的小網(wǎng)站也不能繼續(xù)。網(wǎng)站寫著玩的,所以流量與用戶一定很少。就不打算做“注冊(cè)/登錄”模塊了,這年頭出來上網(wǎng)的有幾個(gè)沒有QQ的(其實(shí)就是懶。。。)。直接用QQ第三方登錄拉取用戶資料。我省事、“用戶”也省事。

    準(zhǔn)備工作:
        1、注冊(cè)騰訊開發(fā)者帳號(hào)
        2、申請(qǐng)網(wǎng)站(移動(dòng)應(yīng)用)接入
        3、向空間、財(cái)付通等需要審核

    簡單的Demo:
        1、登錄
        2、驗(yàn)證是否登錄成功
        3、注銷登錄
        4、獲取OpenID與Access Token
        5、根據(jù)OpenID拉取用戶資料

    步驟:
        0、引入騰訊JS SDK
        <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js"
        data-appid="AppID" data-redirecturi="RedirectURL" charset="utf-8"></script>
        
        AppID:網(wǎng)站/移動(dòng)應(yīng)用申請(qǐng)的AppID
        RedirectURL:登陸后網(wǎng)站的跳轉(zhuǎn)地址。必須為http或https。具體自己看API吧

        1、登錄 (我認(rèn)為一般網(wǎng)站常用的都是這個(gè)樣式的登錄)
        QC.Login.showPopup({
                    appId: "AppID"
        });

       2、驗(yàn)證是否登錄成功
         QC.Login.check()

        成功:true
        失�。篺alse

        3、注銷登錄
        QC.Login.signOut()

        4、獲取OpedID與Access Token
        QC.Login.getMe(function (openId, accessToken) {
        });

        5、 根據(jù)OpenID拉取用戶資料(有問題)
        這個(gè)需要根據(jù)OpenID Get請(qǐng)求獲取Json數(shù)據(jù)(用戶基礎(chǔ)信息),通過Ajax涉及到跨域訪問問題。今天太晚了就不研究了,但是我通過拼接出來的字符串是可以獲取到用戶信息的。
        oauth_consumer_key:AppID
        oauth_consumer_key:accesstoken
        openid:openid
        format :json        // 返回的數(shù)據(jù)格式

        返回參數(shù)說明:
   

    Demo:
   

    原API地址:http://wiki.connect.qq.com/js_sdk%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E




    序:
    繼上一篇繼續(xù)德波。上一篇在Ajax請(qǐng)求的時(shí)候發(fā)生異常。問題是由于Ajax跨域訪問的問題,而JS的Ajax出現(xiàn)問題也是這個(gè)原因。臨睡覺前想了一下既然Ajax不讓跨域(非絕對(duì))那我可以搭建一個(gè)中間層(我是用的中間層是ASHX一般處理程序)。這樣的好處是可以一次請(qǐng)求前后臺(tái)皆獲取到數(shù)據(jù),并后臺(tái)先獲取到數(shù)據(jù)保存到Session中。然后在Response到前臺(tái)。

    步驟:
    1、前臺(tái)同樣是一個(gè)Ajax請(qǐng)求,只是把URL改為本域下的ashx。把必要的參數(shù)發(fā)送到ashx讓他通過WebRequert在去請(qǐng)求外站的接口。后臺(tái)實(shí)現(xiàn)的基本代碼為下圖(PS:ashx中如果想操作Session必須實(shí)現(xiàn)IRequiresSessionState接口):
   
    其中的WebRequestToJson web = new WebRequestToJson();為自己封的工具類,也就是Get請(qǐng)求WebService方法。獲取用戶信息必須使用Get請(qǐng)求�。�!

    2、后臺(tái)請(qǐng)求后把數(shù)據(jù)發(fā)送到前臺(tái)就可以了。貌似TX為了保護(hù)用戶資料只對(duì)第三方網(wǎng)站提供了openID,不允許第三方站點(diǎn)獲取QQ登錄帳號(hào)。
   




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:300760 發(fā)表于 2018-4-2 11:30 | 只看該作者
樓主可以把你的這份源碼發(fā)給我嗎 80403584@qq.com  謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表