Title1

Title2

Title3

5-3 升級至 v6.0.3

用教學專案示範

程式碼.gs

在 doGet(e)


  // 取得 session //(v6.0.3)
  session = getSession(e.parameter.userId);

訪客路由


  Route.path("login", login);// 官方登入 路由
  Route.path("logout", logout);// 官方登出 路由(v6.0.3)

 

function.gs

大約在266行左右


/*============================================
  存儲與當前用戶會話關聯的任何數據 {login: true|flase , user:{}}
  (v6.0.3)
============================================*/
function setSession(session={}) {
  let sId = Session.getTemporaryActiveUserKey();//臨時活動用戶的唯一識別密鑰
  if(!sId && session.login === true && session.user.userId){
    sId = session.user.userId;
  }
  if(sId){
    let uProp = PropertiesService.getUserProperties();
    uProp.setProperty(sId, JSON.stringify(session));    
  }
}

/*============================================
  獲取當前用戶的識別密鑰
  (v6.0.3)
============================================*/
function getSession(userId='') {
  let sId = Session.getTemporaryActiveUserKey();//臨時活動用戶的唯一識別密鑰
  if(!sId && userId){
    sId = userId;
  }

  if(!sId)return { login: false, user:{}};      //無法取值,可能在無痕模式

  let uProp = PropertiesService.getUserProperties();
  let sData = uProp.getProperty(sId);
  return sData ? JSON.parse(sData) : { login: false, user:{}};
}

prog_line_bot.gs

大約在 126行


      // ------------------------------------------ 官方 @管理=>好友登入
      uri = global.url + `?op=login&userId=${userData.userId}&replyToken=${userData.replyToken}`;    
      contents.push(
        {
          "type": "button",
          "style": "primary",
          "margin": "md",
          "height": "sm",
          "action": {
            "type": "uri",
            "label": "好友登入",
            "uri": uri
          }
        });

 

為連結加上 userId

在所有檔案上,搜尋 href、url

  1. 在樣版接首頁的後面:?userId=<?= session.user.userId ?>
  2. 在樣版接其他參數的後面:&userId=<?= session.user.userId ?>
  3. 在程式接首頁的後面(須用 `` ):  ?userId=${session.user.userId}
  4. 在程式接其他參數的後面(須用 `` ):  &userId=${session.user.userId}