Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
΢ÐÅС³ÌÐòÖÐÓû§µÇ¼ºÍµÇ¼̬ά»¤
 
×÷ÕߣºÒ»½ï´úÂë À´Ô´£º°¢ÀïÔÆ ·¢²¼ÓÚ£º2017-2-28
  4480  次浏览      28
 

ÌṩÓû§µÇ¼ÒÔ¼°Î¬»¤Óû§µÄµÇ¼״̬£¬ÊÇÒ»¸öÓµÓÐÓû§ÏµÍ³µÄÈí¼þÓ¦ÓÃÆÕ±éÐèÒª×öµÄÊÂÇé¡£Ïñ΢ÐÅÕâÑùµÄÒ»¸öÉ罻ƽ̨£¬Èç¹û×öÒ»¸öС³ÌÐòÓ¦Óã¬ÎÒÃÇ¿ÉÄܺÜÉÙ»áÈ¥×öÒ»¸öÍêÈ«ÍÑÀëºÍÉáÆúÁ¬½ÓÓû§ÐÅÏ¢µÄ´¿¹¤¾ßÈí¼þ¡£

ÈÃÓû§µÇ¼£¬±êʶÓû§ºÍ»ñÈ¡Óû§ÐÅÏ¢£¬ÒÔÓû§ÎªºËÐÄÌṩ·þÎñ£¬ÊǴ󲿷ÖС³ÌÐò¶¼»á×öµÄÊÂÇé¡£ÎÒÃǽñÌì¾ÍÀ´Á˽âÏÂÔÚС³ÌÐòÖУ¬ÈçºÎ×öÓû§µÇ¼£¬ÒÔ¼°ÈçºÎȥά»¤Õâ¸öµÇ¼ºóµÄ»á»°£¨Session£©×´Ì¬¡£

ÔÚ΢ÐÅС³ÌÐòÖУ¬ÎÒÃÇ´óÖ»áÉæ¼°µ½ÒÔÏÂÈýÀàµÇ¼·½Ê½£º

1.×ÔÓеÄÕ˺Å×¢²áºÍµÇ¼£»

2.ʹÓÃÆäËûµÚÈý·½Æ½Ì¨Õ˺ŵǼ£»

3.ʹÓÃ΢ÐÅÕ˺ŵǼ£¨¼´Ö±½ÓʹÓõ±Ç°ÒѵǼµÄ΢ÐÅÕ˺ÅÀ´×÷ΪС³ÌÐòµÄÓû§½øÐеǼ£©¡£

µÚÒ»ºÍµÚ¶þÖÖ·½Ê½ÊÇĿǰWebÓ¦ÓÃÖÐ×î³£¼ûµÄÁ½ÖÖ·½Ê½£¬ÔÚ΢ÐÅС³ÌÐòÖÐͬÑù¿ÉÒÔʹÓ㬵«ÊÇÐèÒªÖµµÄ×¢ÒâµÄÊÇ£¬Ð¡³ÌÐòÖÐûÓÐCookieµÄ»úÖÆ£¬ËùÒÔÔÚʹÓÃÕâ2ÖÖ·½Ê½Ç°£¬ÇëÈ·ÈÏÄãÃÇ»òµÚÈý·½µÄAPIÊÇ·ñÐèÒªÒÀÀµCookie£»»¹ÓÐС³ÌÐòÖÐÒ²²»Ö§³ÖHTMLÒ³Ãæ£¬ÄÇЩÐèҪʹÓÃÒ³ÃæÖØ¶¨ÏòÀ´½øÐеǼµÄµÚÈý·½API¾ÍÐèÒª¸ÄÔ죬»ò²»ÄÜÓÃÁË¡£

ÎÒÃǽñÌìÖ÷ÒªÀ´ÌÖÂÛһϵÚÈýÖÖ·½Ê½£¬¼´ÈçºÎʹÓÃ΢ÐÅÕ˺ŽøÐеǼ£¬ÒòΪÕâÖÖ·½Ê½ºÍ΢ÐÅÆ½Ì¨½áºÏ×î½ôÃÜ£¬Óû§ÌåÑé±È½ÏºÃ¡£

µÇ¼Á÷³Ì

ÒýÓÃС³ÌÐò¹Ù·½ÎĵµµÄµÇ¼Á÷³Ìͼ£¬Õû¸öµÇ¼Á÷³Ì»ù±¾ÈçÏÂͼËùʾ£º

µÇ¼Á÷³Ìͼ

¸ÃͼÖУ¬¡°Ð¡³ÌÐò¡±Ö¸µÄ¾ÍÊÇÎÒÃÇʹÓÃС³ÌÐò¿ò¼ÜдµÄ´úÂ벿·Ö£¬¡°µÚÈý·½·þÎñÆ÷¡±Ò»°ã¾ÍÊÇÎÒÃÇ×Ô¼ºµÄºǫ́·þÎñ³ÌÐò£¬¡°Î¢ÐÅ·þÎñÆ÷¡±ÊÇ΢ÐŹٷ½µÄAPI·þÎñÆ÷¡£

ÏÂÃæÎÒÃÇÀ´Öð²½·Ö½âÒ»ÏÂÕâ¸öÁ÷³Ìͼ¡£

²½Öè1£ºÔÚ¿Í»§¶Ë»ñÈ¡µ±Ç°µÇ¼΢ÐÅÓû§µÄµÇ¼ƾ֤(code)

ÔÚС³ÌÐòÖеǼµÄµÚÒ»²½£¬¾ÍÊÇÏÈ»ñÈ¡µÇ¼ƾ֤¡£ÎÒÃÇ¿ÉÒÔʹÓÃwx.login()·½·¨²¢µÃµ½Ò»¸öµÇ¼ƾ֤¡£

ÎÒÃÇ¿ÉÒÔÔÚС³ÌÐòµÄApp´úÂëÖз¢ÆðµÇ¼ƾ֤ÇëÇó£¬Ò²¿ÉÒÔÔÚÆäËûÈκÎPageÒ³Ãæ´úÂëÖз¢ÆðµÇ¼ƾ֤ÇëÇó£¬Ö÷Òª¸ù¾ÝÄãС³ÌÐòµÄʵ¼ÊÐèÒª¡£

App({
onLaunch: function() {
wx.login({
success: function(res) {
var code = res.code;
if (code) {
console.log('»ñÈ¡Óû§µÇ¼ƾ֤£º' + code);
} else {
console.log('»ñÈ¡Óû§µÇ¼̬ʧ°Ü£º' + res.errMsg);
}
}
});
}
})

²½Öè2£º½«µÇ¼ƾ֤·¢ÍùÄãµÄ·þÎñ¶Ë£¬²¢ÔÚÄãµÄ·þÎñ¶ËʹÓÃ¸ÃÆ¾Ö¤Ïò΢ÐÅ·þÎñÆ÷»»È¡¸Ã΢ÐÅÓû§µÄΨһ±êʶ(openid)ºÍ»á»°ÃÜÔ¿(session_key)

Ê×ÏÈ£¬ÎÒÃÇʹÓÃwx.request()·½·¨£¬ÇëÇóÎÒÃÇ×Ô¼ºÊµÏÖµÄÒ»¸öºǫ́API£¬²¢½«µÇ¼ƾ֤£¨code£©Ð¯´ø¹ýÈ¥£¬ÀýÈçÔÚÎÒÃÇÇ°Ãæ´úÂëµÄ»ù´¡ÉÏÔö¼Ó£º

App({
onLaunch: function() {
wx.login({
success: function(res) {
var code = res.code;
if (code) {
console.log('»ñÈ¡Óû§µÇ¼ƾ֤£º' + code);

// --------- ·¢ËÍÆ¾Ö¤ ------------------
wx.request({
url: 'https://www.my-domain.com/wx/onlogin',
data: { code: code }
})
// ------------------------------------

} else {
console.log('»ñÈ¡Óû§µÇ¼̬ʧ°Ü£º' + res.errMsg);
}
}
});
}
})

ÄãµÄºǫ́·þÎñ(/wx/onlogin)½Ó×ÅÐèҪʹÓÃÕâ¸ö´«µÝ¹ýÀ´µÄµÇ¼ƾ֤£¬È¥µ÷ÓÃ΢ÐŽӿڻ»È¡openidºÍsession_key£¬½Ó¿ÚµØÖ·¸ñʽÈçÏÂËùʾ£º

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

ÕâÀïÊÇÎÒʹÓÃÁËNode.js Express¹¹½¨µÄºǫ́·þÎñµÄ´úÂ룬½ö¹©²Î¿¼£º

router.get('/wx/onlogin', function (req, res, next) {
let code = req.query.code

request.get({
uri: 'https://api.weixin.qq.com/sns/jscode2session',
json: true,
qs: {
grant_type: 'authorization_code',
appid: 'ÄãС³ÌÐòµÄAPPID',
secret: 'ÄãС³ÌÐòµÄSECRET',
js_code: code
}
}, (err, response, data) => {
if (response.statusCode === 200) {
console.log("[openid]", data.openid)
console.log("[session_key]", data.session_key)

//TODO: Éú³ÉÒ»¸öΨһ×Ö·û´®sessionid×÷Ϊ¼ü£¬½«openidºÍsession_key×÷Ϊֵ£¬´æÈëredis£¬³¬Ê±Ê±¼äÉèÖÃΪ2Сʱ
//α´úÂë: redisStore.set(sessionid, openid + session_key, 7200)

res.json({ sessionid: sessionid })
} else {
console.log("[error]", err)
res.json(err)
}
})
})

Õâ¶Îºǫ́´úÂë³É¹¦Ö´Ðеϰ£¬¾Í¿ÉÒԵõ½openidºÍsession_key¡£Õâ¸öÐÅÏ¢¾ÍÊǵ±Ç°Î¢ÐÅÕË»§ÔÚ΢ÐÅ·þÎñÆ÷ÄDZߵĵǼ̬ÁË¡£

µ«ÊÇ£¬ÎªÁ˰²È«·½ÃæµÄÔ­Òò£¬Çë²»ÒªÖ±½ÓʹÓÃÕâЩÐÅÏ¢×÷ΪÄãС³ÌÐòµÄÓû§±êʶºÍsession±êʶ»Ø´«µ½Ð¡³ÌÐò¿Í»§¶ËÖÐÈ¥£¬ÎÒÃÇÓ¦¸ÃÔÚ·þÎñÆ÷¶Ë×öÒ»²ã×Ô¼ºµÄsession£¬½«Õâ¸ö΢ÐÅÕ˺ŵǼ̬Éú³ÉÒ»¸ösession id²¢Î¬»¤ÔÚÎÒÃÇ×Ô¼ºµÄsession»úÖÆÖУ¬È»ºó°ÑÕâ¸ösession idÅÉ·¢µ½Ð¡³ÌÐò¿Í»§¶Ë×÷Ϊsession±êʶÀ´Ê¹Óá£

¹ØÓÚÈçºÎÔÚ·þÎñÆ÷¶Ë×öÕâ¸ösession»úÖÆ£¬ÎÒÃÇÏÖÔÚÒ»°ã²ÉÓüüÖµ¶Ô´æ´¢¹¤¾ßÀ´×ö£¬±ÈÈçredis¡£ÎÒÃÇΪÿ¸ösessionÉú³ÉÒ»¸öΨһµÄ×Ö·û´®×÷Ϊ¼ü£¬È»ºó¿ÉÒÔ½«session_keyºÍopenid×÷Ϊֵ£¬´æÈëredisÖУ¬ÎªÁ˰²È«£¬´æÈëµÄʱºò»¹Ó¦ÉèÖÃÒ»¸ö³¬Ê±µÄʱ¼ä¡£

²½Öè3£ºÔÚ¿Í»§¶Ë±£´æSession ID

¿ª·¢WebÓ¦ÓõÄʱºò£¬ÔÚ¿Í»§¶Ë£¨ä¯ÀÀÆ÷£©ÖУ¬ÎÒÃÇͨ³£½«Session ID´æ·ÅÔÚcookieÖУ¬µ«ÊÇС³ÌÐòûÓÐcookie»úÖÆ£¬ËùÒÔ²»ÄܲÉÓÃcookieÁË£¬µ«ÊÇС³ÌÐòÓб¾µØµÄstorage£¬ËùÒÔÎÒÃÇ¿ÉÒÔʹÓÃstorageÀ´±£´æSession ID£¬ÒÔ¹©ºóÐøµÄºǫ́APIµ÷ÓÃËùʹÓá£

ÔÚÖ®ºó£¬µ÷ÓÃÄÇЩÐèÒªµÇ¼ºó²ÅÓÐȨÏÞ·ÃÎʵĺǫ́·þÎñʱ£¬Äã¿ÉÒÔ½«±£´æÔÚstorageÖеÄSession IDÈ¡³ö²¢Ð¯´øÔÚÇëÇóÖУ¨¿ÉÒÔ·ÅÔÚheaderÖÐЯ´ø£¬Ò²¿ÉÒÔ·ÅÔÚquerystringÖУ¬»òÊÇ·ÅÔÚbodyÖУ¬¸ù¾ÝÄã×Ô¼ºµÄÐèÒªÀ´Ê¹Óã©£¬´«µÝµ½ºǫ́·þÎñ£¬ºǫ́´úÂëÖлñÈ¡µ½¸ÃSession IDºó£¬´ÓredisÖвéÕÒÊÇ·ñÓиÃSession ID´æÔÚ£¬´æÔڵϰ£¬¼´È·ÈϸÃsessionÊÇÓÐЧµÄ£¬¼ÌÐøºóÐøµÄ´úÂëÖ´ÐУ¬·ñÔò½øÐдíÎó´¦Àí¡£

ÕâÊÇÒ»¸öÐèÒªsessionÑéÖ¤µÄºǫ́·þÎñʾÀý£¬ÎÒµÄSession IDÊÇ·ÅÔÚheaderÖд«µÝµÄ£¬ËùÒÔÔÚÕâ¸öʾÀýÖУ¬ÊÇ´ÓÇëÇóµÄheaderÖлñÈ¡sessionid£º

router.get('/wx/products/list', function (req, res, next) {
let sessionid = req.header("sessionid")
let sessionVal = redisStore.get(sessionid)

if (sessionVal) {
// Ö´ÐÐÆäËûÒµÎñ´úÂë
} else {
// Ö´ÐдíÎó´¦Àí
}
})

ºÃÁË£¬Í¨¹ý΢ÐÅÕ˺ŽøÐÐС³ÌÐòµÇ¼ºÍ״̬ά»¤µÄ¼òµ¥Á÷³Ì¾ÍÊÇÕâÑù£¬Á˽âÕâЩ֪ʶµãÖ®ºó£¬ÔÙ»ùÓڴ˽øÐкóÐøµÄ¿ª·¢¾Í»á±äµÃ¸üÈÝÒ×ÁË¡£

CSDN¼¼Êõ¹«¿ª¿Î³ÏÑû¶ÔС³ÌÐòÓÐʵ¼ù¾­ÑéµÄ¼¼Êõר¼Ò¡¢×ÊÉ·¢Õߣ¬µ£ÈÎ΢ÐÅС³ÌÐò¼¼Êõ¹«¿ª¿Î½²Ê¦£¬´øÀ´ÓйØÐ¡³ÌÐò¸üÉîÈë¡¢¸üÈ«ÃæµÄ¼¼Êõ·ÖÏí¡£ÑûÇëÁ÷³ÌÇë¼û£ºhttp://geek.csdn.net/news/detail/134790¡£

Ò²»¶Ó­¸÷λר¼ÒÀÏʦɨÃèÒÔ϶þάÂ룬¼ÓÇï¸èΪºÃÓÑ£¬Ç°À´×Éѯ£¬Ï໥½»Á÷¡£¼ÓºÃÓÑʱ£¬Çë×¢Ã÷£º½²Ê¦+С³ÌÐò¡£

   
4480 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ