Baiduのアプレットのログイン認証プロセスを介して取得Renduermai

 

 

ハンド百のアプレットは、承認プロセスにログイン

スマート小さなプログラムを簡単に身元BaiduのBaiduの公式サインオン機能、高速なスマートアプレットにユーザシステムを構築し提供することで、ユーザーのIDにアクセスすることができます。

 

図1に示すように、開発者は、バックサーバに仮登録証明書のコードを取得するために)(swan.loginを呼び出し、そして、
SESSION_KEY引き換えに符号化する2、サーバ開発者;
3、ユーザー情報を取得するためにswan.getUserInfo()を呼び出します。

 

使用Baiduの承認のための準備ができました:
あなたは、スマート少しのclient_id取得するためのプログラム(のAppKey)と上から見たclient_secret(AppSecret)、両方のスマートアプレット開発の背景を作成する必要があります。

概略的な流れ

コンセプト:
  • OAuth 2.0の(オープン認証):オープン標準のログイン認証。ユーザー認証後、サードパーティは、ユーザーにアクセスするためのユーザーのユーザー名とパスワードを取得することなく、小さなプログラムをスマート。
  • セッションキー:セッションのスマートアプレットの承認のための主要なユーザー。ユーザー認証の後、開発者は、ユーザーがスマートアプレットで情報を得ることができた後、Baiduのオープンプラットフォームによってセッションのセッションキーの認証を取得することができます。独自のデータのセキュリティを適用するためには、サーバーの開発者は、小さなプログラムに対して発行されたセッション鍵であってはならないキーの外側に設けられたべきではありません。必要なパラメータは、ユーザ情報を取得するために使用されるセッション鍵を理解することができます。
  • コード:許可されたユーザのID。ユーザーが承認アプリケーションの要求後にサーバによって開発中の有効な許可IDを完了した、非常に短い期間(10分)、およびのclient_id secret_keyにコードとスマート小さなプログラムの普及オープンプラットフォームのインターフェースを生成します、あなたが得ることができますSESSIONKEYへ。
以下は、インテリジェントな小さなプログラムは、OAuth 2.0の認証とユーザー情報へのアクセスは使用しています:

 

図1に示すように、アプリケーション内で実行スマートアプレット使用 swan.login() 認証コードを取得するためのインターフェースと、
2、認証によって得られたコードの  セッションキー
図3は、呼び出し getUserInfoは、 ユーザ情報を取得します。
図4は、ユーザーが認証を完了し、認証セッションがまだ有効であるとき、スマートな小さなプログラムは、常に最初の2つのステップを実行しませんが、第3のステップは、直接ユーザー情報を取得することができます。
現在のユーザーの認証セッションが期間中であるかを決定するために 、あなたが呼び出すことができます checkSession() を判断する方法を参照してください ダウンロードアプレット有料デモを

セッションキーの有効性(注)

突然の故障を復号化し始めた場合はセッション鍵情報の復号処理に基づいて開発者は、セッションキーには、いくつかの注意事項を以下に注意してください。
1は、セッションキーは時間に敏感で、セッションキーは使用されません有効期限が切れています。セッションキーの失敗で開発者は、ログインプロセスを再実行することにより、有効なセッションキーを取得する必要があります。
使用2、 checkSession()は ログインプロセスを回避するようにアプレットが繰り返し実行され、セッション鍵が有効であることを確認することができる、参照 権限フローチャート checkSessionには()を使用します。
3、スマートな小さなプログラムは、セッションキーは、開発者のために有効で通知しません。私たちは、アプレットを使用して、ユーザーの行動に基づいてセッションキーのために更新されます。ユーザーアプレットをより頻繁に使用することは、長いセッションキーが有効です。

 

swan.login

説明:コール・インタフェースは、認証コードを取得しswan.login、スマートな小さなプログラムは、認証コードを取得するためにswan.login()インタフェースを使用することができます。

 

swan.login({ 
    成功:RES => { 
        swan.request({ 
            URL: 'HTTPS:// XXX / XXX'、// 現像サーバアドレス
            データ:{ 
                コード:res.code 
            } 
        }); 
    }、
    失敗。 ERR => { 
        にconsole.log( 'ログイン失敗' 、ERR); 
    } 
})。

 

 

セッションキー

説明:スマートアプレットがPOSTにそのサービス要求を送信は、BaiduのOAuth2.0は、サービスアドレスを許可終了し、対応するバンドのパラメータは、セッションキーを取得することができます。
セッションキーのURLアドレスを取得します:

 

为了让您的智能小程序运行在联盟 App 上,我们对获取 SessionKey 的接口做了升级。新接口可以兼容获取百度内部 App 和百度外部 App 的 SessionKey。
您只需要将原接口地址 " https://openapi.baidu.com/nalogin/getSessionKeyByCode" 更改为 " https://spapi.baidu.com/oauth/jscode2sessionkey" ,即可让您的智能小程序在其它App上自动实现账号关联。
获取Session Key需要的参数:

 

 

请求示例:

 

swan.checkSession

通过上述接口获得的用户登录态拥有一定的时效性,用户越久未使用智能小程序,用户登录态越有可能失效;反之如果用户一直在使用智能小程序,则用户登录态一直保持有效。具体时效逻辑由宿主维护,对开发者透明。开发者可以调用 swan.checkSession 接口 检测当前用户登录态是否有效,登录态过期后开发者可以再调用 swan.login 获取新的用户登录态。

 

 

Demo代码( 在百度APP版本11.16(不包括11.16)之前建议按照如下示例使用)

swan.checkSession({
    success: function (res) {
        swan.showModal({
            title: '',
            content: '用户在小程序中 登录态有效'
        });
        if(!res.result){
            swan.showModal({
                title: '',
                content: '用户在小程序中 登录态无效,调用swan.login可获取有效Session Key',
            });
            swan.login({
                success: res => {
                    console.log('login success', res);
                },
                fail: err => {
                    console.log('login fail', err);
                }
            });
        }
    },
    fail: function (err) {
        swan.showModal({
            title: '',
            content: '用户在小程序中 登录态无效,请先 登录百度APP',
        });
        swan.login({
            success: res => {
                console.log('login success', res);
            },
            fail: err => {
                console.log('login fail', err);
            }
        });
    }
});

 

Demo代码( 在百度APP版本11.16(包括11.16)之后建议按照如下示例使用)

Page({
    swan.checkSession({
        success: function (res) {
            swan.showModal({
                title: '',
                content: '用户在小程序中 登录态有效'
            });
        },
        fail: function (err) {
            swan.showModal({
                title: '',
                content: '用户在小程序中 登录态无效,调用swan.login可获取有效 登录态',
            });
            swan.login({
                success: res => {
                    console.log('login success', res);
                },
                fail: err => {
                    console.log('login fail', err);
                }
            });
        }
    });
});

 

swan.isLoginSync

基础库 1.13.4 版本开始支持。
 

 

<view class="wrap">
    <button type="primary" bindtap="isLoginSync">isLoginSync</button>
</view>

 

Page({
    isLoginSync() {
        try {
            var result = swan.isLoginSync();
            console.log('isLoginSync', result);
        } catch (e) {
            console.log('error', e);
        }
    }
});

 

 最后使用swan.getUserInfo方法获取用户的信息就可以了。

官方文档:https://smartprogram.baidu.com/docs/develop/fuctionlist/list/

 

 

おすすめ

転載: www.cnblogs.com/sauronblog/p/11781499.html