找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6541|回復(fù): 1
收起左側(cè)

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

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

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

    簡單的Demo:
        1、登錄
        2、驗證是否登錄成功
        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)站/移動應(yīng)用申請的AppID
        RedirectURL:登陸后網(wǎng)站的跳轉(zhuǎn)地址。必須為http或https。具體自己看API吧

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

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

        成功:true
        失�。篺alse

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

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

        5、 根據(jù)OpenID拉取用戶資料(有問題)
        這個需要根據(jù)OpenID Get請求獲取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請求的時候發(fā)生異常。問題是由于Ajax跨域訪問的問題,而JS的Ajax出現(xiàn)問題也是這個原因。臨睡覺前想了一下既然Ajax不讓跨域(非絕對)那我可以搭建一個中間層(我是用的中間層是ASHX一般處理程序)。這樣的好處是可以一次請求前后臺皆獲取到數(shù)據(jù),并后臺先獲取到數(shù)據(jù)保存到Session中。然后在Response到前臺。

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

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




回復(fù)

使用道具 舉報

ID:300760 發(fā)表于 2018-4-2 11:30 | 顯示全部樓層
樓主可以把你的這份源碼發(fā)給我嗎 80403584@qq.com  謝謝
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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