Swift QQ授權登入,並擷取個人資訊(使用者資料)的例子

來源:互聯網
上載者:User
現在很多APP或者網站都支援使用QQ帳號進行登入。本文示範如何?QQ的第三方登入,以及登入後的擷取使用者的個人資訊。
 

1,騰訊開放平台註冊,以及SDK的配置(這個可以官方去找)

2,登入授權,並擷取使用者資料資訊

(1)點擊“登入並擷取使用者資料”按鈕
(2)程式會自動跳轉到QQ,顯示登入頁面(頁面上會顯示需要的授權)
(3)登入成功後又會自動返回原來的APP。本範例中我們在登入成功後,擷取使用者資訊並列印出來
附:返回參數說明
參數名稱 描述
ret 返回碼。詳見公用返回碼說明#OpenAPI V3.0 返回碼。
msg 如果錯誤,返回錯誤資訊。
is_lost 判斷是否有資料丟失。如果應用不使用cache,不需要關心此參數。
0或者不返回:沒有資料丟失,可以緩衝。
1:有部分資料丟失或錯誤,不要緩衝。
nickname 暱稱。
gender 性別。
country 國家(當pf=qzone、pengyou或qplus時返回)。
province 省(當pf=qzone、pengyou或qplus時返回)。
city 市(當pf=qzone、pengyou或qplus時返回)。
figureurl 頭像URL。詳見:前端頁面規範#6. 關於帳戶圖片的擷取和尺寸說明。
openid 使用者QQ號碼轉化得到的ID(當pf=qplus時返回)。
qq_level 使用者QQ等級(當pf=qplus時返回)。
qq_vip_level 使用者QQ會員等級(當pf=qplus時返回)。
qplus_level 使用者Q+等級(當pf=qplus時返回)。
is_yellow_vip 是否為黃鑽使用者(0:不是; 1:是)。
(當pf=qzone、pengyou或qplus時返回)
is_yellow_year_vip 是否為年費黃鑽使用者(0:不是; 1:是)。
(當pf=qzone、pengyou或qplus時返回)
yellow_vip_level 黃鑽等級,目前最進階別為黃鑽8級(如果是黃鑽使用者才返回此參數)。
(當pf=qzone、pengyou或qplus時返回)
is_yellow_high_vip 是否為豪華版黃鑽使用者(0:不是; 1:是)。
(當pf=qzone、pengyou或qplus時返回)
is_blue_vip 是否為藍鑽使用者(0:不是; 1:是)。
(當pf=qqgame或3366時返回)
is_blue_year_vip 是否為年費藍鑽使用者(0:不是; 1:是)。
(當pf=qqgame或3366時返回)
blue_vip_level 藍鑽等級(如果是藍鑽使用者才返回此參數)。
(當pf=qqgame或3366時返回)
3366_level 3366使用者的大等級。
(當pf=3366時返回)
3366_level_name 3366使用者的等級名,如小遊遊、小遊仙。
(當pf=3366時返回)
3366_grow_level 3366使用者的成長等級。
(當pf=3366時返回)
3366_grow_value 3366使用者的成長值。
(當pf=3366時返回)
is_super_blue_vip 是否是豪華藍鑽。
(當pf=qqgame或3366時返回)

(4)範例代碼:


import UIKit
 
class ViewController: UIViewController, TencentSessionDelegate{
     
    var _tencentOAuth:TencentOAuth!
     
    override func viewDidLoad() {
        super.viewDidLoad()
         
        _tencentOAuth = TencentOAuth.init(appId: "1105212016", andDelegate: self)
    }
     
    //登入按鈕點擊
    @IBAction func login(sender: AnyObject) {
        //設定許可權列表
        let permissions = ["get_user_info","get_simple_userinfo"];
        //登陸
        _tencentOAuth.authorize(permissions)
    }
     
    //登陸完成調用
    func tencentDidLogin() {
        if !_tencentOAuth.accessToken.isEmpty {
            print("----------------------------------------")
            print("登入成功!")
            print("openId:\(_tencentOAuth.openId)",
                "accessToken:\(_tencentOAuth.accessToken)",
                "expirationDate:\(_tencentOAuth.expirationDate)")
            print("開始擷取使用者資料")
            _tencentOAuth.getUserInfo()
        }else {
            print("登入失敗!沒有擷取到accessToken")
        }
    }
     
    /**
    * 登入失敗後的回調
    */
    func tencentDidNotLogin(cancelled:Bool) {
        if cancelled {
             print("使用者取消登入!")
        }else{
             print("登入失敗!")
        }
    }
     
    /**
    * 登入時網路有問題的回調
    */
    func tencentDidNotNetWork() {
        print("沒有網路,無法登入!")
    }
     
    /**
     * 取得使用者資訊的回調
     */
    func getUserInfoResponse(response:APIResponse) {
        print("----------------------------------------")
        print("使用者資料擷取成功:")
        print(response.jsonResponse)
    }
     
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

3,退出登入

要退出登入、取消授權。只需要調用 TencentOAuth 對象的 logout() 方法即可。

_tencentOAuth.logout(self)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.