百度智能小程序 登錄

2020-09-05 14:38 更新

swan.login

解釋: 調(diào)用接口 swan.login 獲取 Authorization Code ,智能小程序可以使用swan.login()接口獲取 Authorization Code。

Web 態(tài)說明:

初次登錄:Web 態(tài)在小程序未登錄狀態(tài)下登錄時,會跳轉(zhuǎn)到百度提供的授權(quán)登錄頁,登錄成功后再跳回原小程序頁面。該跳轉(zhuǎn)過程會導(dǎo)致無法恢復(fù)原小程序頁面的上下文,所以 swan.login 的回調(diào)(success、fail、complete)無法執(zhí)行,從而開發(fā)者無法獲取到 code。為了解決上述問題,開發(fā)者需要在 App 示例上額外增加一個 onLogin 生命周期,用于在 Web 態(tài)下獲取 code 值。具體見下面代碼示例 1

登錄態(tài)下再登錄: Web 態(tài)和端內(nèi)行為一致。

方法參數(shù)

Object object

object參數(shù)說明

屬性名類型必填默認值說明

timeout

Number

超時時間,單位 ms

success

Function

接口調(diào)用成功的回調(diào)函數(shù)

fail

Function

接口調(diào)用失敗的回調(diào)函數(shù)

complete

Function

接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)

success 返回參數(shù)說明

參數(shù)類型說明

code

String

用戶登錄憑證(有效期十分鐘),開發(fā)者需要在開發(fā)者服務(wù)器后臺調(diào)用 api,使用 code 換取 session_key 等信息。
用戶登錄憑證 code 只能使用一次。

示例



圖片示例

代碼示例 1:獲取 code 

在開發(fā)者工具中打開

<view class="wrap">
    <view class="card-area">
        <button bind:tap="login" type="primary" hover-stop-propagation="true">登錄</button>
    </view>
</view>
// App.js
App({
    // onLogin在百度 APP 端內(nèi)小程序內(nèi)永遠不會執(zhí)行,只有在 Web 態(tài)的小程序初次登錄成功后才會執(zhí)行
    onLogin(options) {
        console.log('login success', options) // {code: "e4a13af4e6d8c491b701a86682a5bc76NW"}
        // 使用 code 換取 session_key 等信息
    }
});

// Page.js
Page({
    login(e) {
        swan.checkSession({
            success: res => {
                console.log('checkSession success', res);
                swan.showToast({
                    title: '您已登錄',
                    icon: 'none'
                });
            },
            fail: err => {
                console.log('checkSession fail', err);
                swan.login({
                    success: res => {
                        console.log('login success', res);
                        // {code: "e4a13af4e6d8c491b701a86682a5bc76NW"}
                        swan.showToast({
                            title: '登錄成功',
                            icon: 'none'
                        });
                    },
                    fail: err => {
                        console.log('login fail', err);
                        swan.showToast({
                            title: '登錄失敗',
                            icon: 'none'
                        });
                    }
                });
            }
        });
    }
});

參考示例

參考示例 1:同步手百的登錄態(tài)實現(xiàn)聯(lián)合登錄流程 

在開發(fā)者工具中打開

Page({
    onLoad() {
        // 用戶首次進入小程序,同步百度APP登錄態(tài)
        swan.login({
            success: res => {
                console.log('login success', res);
                // 獲取用戶手機號或用戶信息
                swan.getUserInfo({
                    success: res => {
                        console.log('用戶信息', res);
                    },
                    fail: err => {
                        console.log('用戶信息獲取失敗', err);
                        if (err.errCode === 10003) {
                            swan.showModal({
                                title: '用戶信息獲取失敗,請先開啟授權(quán)',
                                success: res => {
                                    swan.openSetting();
                                }
                            });
                        }
                    }
                });
            },
            fail: err => {
                console.log('login fail', err);
            }
        });
    },
    onShow() {
        // 用戶進入小程序檢測小程序在手百的登陸態(tài)是否有效
        swan.checkSession({
            success: res => {

console.log('用戶的登陸態(tài)有效', res);

}, fail: err => { // 小程序的登陸態(tài)失效,需要再次登錄 swan.login({ success: res => { console.log('login success', res); }, fail: err => { console.log('login fail', err); } }); } }); }, });

參考示例 2:與開發(fā)者服務(wù)器詳細示例 

在開發(fā)者工具中打開

詳細示例請在開發(fā)者工具中查看。

參考示例 3:開發(fā)者工具中左上角的登錄態(tài)與模擬器中用戶的百度 APP 登錄態(tài)不同步,對于某些接口的登錄報錯,開發(fā)者需要自行調(diào)用 swan.login 

在開發(fā)者工具中打開

form 模版為 report-type="default",需要用此兼容邏輯,詳細示例請在開發(fā)者工具中查看。

Web 態(tài)登錄流程說明

Tips:

  • 由于小程序 Web 態(tài)框架無法觸發(fā)開發(fā)者 login 中的 fail 回調(diào),所以盡量不要在 login 的 fail 邏輯中實現(xiàn)小程序頁面展現(xiàn)相關(guān)的關(guān)鍵邏輯。

錯誤碼

Android

錯誤碼說明

201

解析失敗,請檢查調(diào)起協(xié)議是否合法。

1001

執(zhí)行失敗

iOS

錯誤碼說明

202

解析失敗,請檢查參數(shù)是否正確。

10001

內(nèi)部錯誤

10002

網(wǎng)絡(luò)請求失敗

10004

用戶拒絕(user not login)

10007

請求超時


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號