ãã1. å®è£
php_weixin_provider
ããå¨é¡¹ç®ä¸è¿è¡composer require thirdproviders/weixinï¼å³å¯å®æå®è£
ãå®è£
æååï¼å¨é¡¹ç®çvendorç®å½ä¸åºè¯¥è½çå°php_weixin_providerçåºæ件ï¼
ããimage
ãã2. é
置微信ç»å½çåæ°
ããä¸å
±æ7个åæ°å¯ä»¥é
ç½®ï¼åå«æ¯ï¼
ããclient_idï¼å¯¹åºå
¬ä¼å·å建çåºç¨appid
ããclient_secretï¼å¯¹åºå
¬ä¼å·å建çåºç¨appid
ããredirectï¼å¯¹åºå¾®ä¿¡æææååçåè°å°å
ããproxy_urlï¼å¯¹åºå¾®ä¿¡ææç代çæå¡å°åï¼å
¶ä½ç¨å¯é
读è¿ç¯æç« äºè§£ï¼
ããdeviceï¼åºå«æ¯PC端微信ç»å½è¿æ¯ç§»å¨ç«¯å¾®ä¿¡ç»å½ï¼é»è®¤å¼ä¸ºpcï¼å¦ææ¯ç§»å¨ç«¯ï¼å¯è®¾ç½®ä¸ºç©º
ããstate_cookie_nameï¼ææé¾æ¥ä¸ä¼å
å«éæºçstateåæ°ï¼è¿ä¸ªåæ°å¨å¾®ä¿¡åè°çæ¶åä¼åå°ä¸å¨çè¿åæ¥ï¼å±æ¶å¯éè¿éªè¯stateåæ°æ¯å¦ä¸ææé¾æ¥ä¸ä¼ å
¥çåæ°ç¸åï¼æ¥å¤æ请æ±æ¯å¦ææï¼é²æ¢CSRFæ»å»ãè¿ä¸ªæ¹æ¡ï¼ä¼å¨æææ¶æstateåæ°å
åå°cookieéé¢ï¼æ以è¿ä¸ªåæ°ç¨æ¥æå®è¿ä¸ªstateåæ°åå
¥çcookieå称ï¼é»è®¤å¼æ¯wx_state_cookie
ããstate_cookie_timeï¼æå®wx_state_cookieçæææ¶é¿ï¼é»è®¤æ¯5åé
ããè¿ä¸ä¸ªåæ°æ2ç§è®¾ç½®æ¹å¼ã
ãã第ä¸ç§æ¯æè¿äºåæ°ä»¥å¤§åçå½¢å¼é
ç½®å°.envé
ç½®æ件éé¢ï¼
ããimage
ãã注ï¼1ãæ¯ä¸ªé
置项é½æ¯å¤§åï¼ä¸ä»¥WEIXIN_å¼å¤´ï¼2ãåä¸ä¸ªé
置项ä¸åé¢ä»ç»çåæ°å称ä¸å®å
¨ä¸è´ï¼KEY对åºclient_idï¼SECRET对åºclient_secretï¼REDIRECT_URI对åºredirectï¼3ãå
¶å®çä¸åé¢ä»ç»çåæ°å称ä¸è´ã
ãã第äºç§æ¯æè¿äºåæ°é
ç½®å°config/services.phpæ件éé¢å»ï¼
ããimage
ããè¿ç§æ¹å¼çé
ç½®ï¼æ¯ä¸ªé
置项çå称ä¸åé¢ä»ç»çä¸è´ã
ããè¦æ³¨æçå
容ï¼
ããç±äºphp_weixin_provideræ¯åºäºlaravel/socialiteå®ç°çï¼å®è¦æ±å¿
é¡»é
ç½®client_idï¼client_secretåredirectï¼å¦åphp_weixin_providerå®ä¾åè¿ç¨å°±ä¼åºéï¼å¯¹äºclient_idåclient_secretï¼æ认为ç»ä¸é
ç½®å¨ä¸ä¸ªå°æ¹æ¯æ²¡æé®é¢çï¼ä½æ¯å¯¹äºredirectï¼å¦æç»ä¸é
ç½®ï¼ä¸ä¸å®ç¬¦åææåºæ¯çéæ±ï¼å 为ä¸æ¯æ¯ä¸ä¸ªç¨å°å¾®ä¿¡ç»å½çå°æ¹ï¼æåçåè°å°åé½æ¯åä¸ä¸ªï¼æ以建议æredirectå
é
ç½®æä¸ä¸ªææææ æé空çåè°å°åï¼åæ£å¨åé¢ä½¿ç¨php_weixin_providerçæ¶åè¿å¯ä»¥å¨è°ç¨çæ¶åæ´æ¹è¿ä¸ªåæ°çå¼ã
ããproxy_urlå¦ææï¼ä¹å»ºè®®é
ç½®å¨å
Œ
±çå°æ¹ï¼
ããstate_cookie_nameåstate_cookie_timeç±äºé½æé»è®¤å¼ï¼åºæ¬ä¸æ ééæ°é
ç½®ï¼
ããdeviceå¯ä»¥å¨ä½¿ç¨çæ¶ååæå®ã
ããææé
ç½®åæ°é½å¯ä»¥å¨ä½¿ç¨çæ¶åéæ°æå®ã
ãã3. 注åphp_weixin_provider
ããå¨é¡¹ç®çconfig/app.phpæ件éé¢ï¼æ¾å°providersé
ç½®èï¼æå¦ä¸ä»£ç å å°å®çé
ç½®æ°ç»éé¢ï¼
ããimage
ãã4. 注å第ä¸æ¹ç»å½äºä»¶ççå¬
ããå¨é¡¹ç®çapp/Providers/EventServiceProvider.phpéé¢å å
¥ä»¥ä¸ä»£ç ï¼
ããimage
ããlaravelæ¡æ¶æ´ä½ä¸æ¯ä¸ç§IOCè·äºä»¶é©±å¨çææ³ï¼çæjså°±ä¼å¯¹äºä»¶é©±å¨é常çæï¼çæ设计模å¼ï¼å°±ä¼å¯¹IOCï¼æ§å¶å转ï¼ä¹ç§°ä¸ºDIï¼ä¾èµæ³¨å
¥ï¼æ¯è¾çæï¼è¿ä¸ªæ¯ç解第3æ¥å第4æ¥é
ç½®ä½ç¨çå
³é®ã
ãã5. ç¼å微信ç»å½çæ¥å£
ãã举ä¾å¦ä¸ï¼
ãã+ View code
ããSocialite::with('weixin')ä¼è¿åphp_weixin_providerçå®ä¾ï¼ä¹å°±æ¯å®ï¼
ããimage
ããæ¿å°è¿ä¸ªå®ä¾ä¹åï¼å°±å¯ä»¥éç¨é¾å¼çæ¹å¼è°ç¨å®æä¾çææpublicæ¹æ³ï¼æ¯å¦è®¾ç½®é
ç½®åæ°ï¼setDeviceççã
ãã6. ç¼å微信ç»å½åè°çæ¥å£
ãã举ä¾å¦ä¸ï¼
ãã+ View code
ããéè¿Socialite::with('weixin')æ¿å°php_weixin_providerå®ä¾åï¼è°ç¨useræ¹æ³ï¼å°±ä¼èªå¨è·å¾®ä¿¡è°ç¨ç¸å
³æ¥å£ï¼å¹¶æ微信çè¿åå¼å°è£
æ对象è¿åãå¦æå¨æ¤è¿ç¨ä¸ï¼æä»»ä½é误é½ä¼ä»¥å¼å¸¸çå½¢å¼æåºï¼æ¯å¦stateåæ°æ ¡éªå¤±è´¥ï¼æ¯å¦code失æçã
ããè¿åç$user对象å
å«çææå±æ§æï¼
ããimage
ããå°ç»ï¼
ããè¿ä¸ªæ¹æ¡æ¯åºäºlaravel/socialiteå®ç°ï¼å¹¶åå¸å°composeræ¥ä½¿ç¨çãlaravel/socialiteæ¯laravelå®æ¹æä¾ç第ä¸æ¹ç»å½ç模åï¼åºäºå®å¯ä»¥å¾æ¹ä¾¿çéæ大é¨å第ä¸æ¹å¹³å°ç认è¯ï¼ç®åå®å®æ¹å·²ç»æä¾å¾å¤ç¬¬ä¸æ¹çç»å½å®ç°ï¼
https://socialiteproviders.github.io/ãé¤äºå½å¤çfacebook,google,githubçï¼å½å
ç微信ï¼å¾®åï¼qqä¹é½ææä¾ãæå¨ä¸å¼å§ä¹ç¨çæ¯å®å®æ¹æä¾çé»è®¤ç微信ç»å½provideræ¥åçï¼ä½æ¯åæ¥æåç°äºä»¥ä¸å 个é®é¢ï¼
ãã1. ä¸æ¯æ微信ææç代çï¼
ãã2. pc端è·ç§»å¨ç«¯ç«ç¶è¿æ¯å两个项ç®æ¥åç:
ããimage
ãã3. å®å°è£
çuser对象éç«ç¶ä¸å
å«unionid
ãã4. æ´æ¹é
ç½®åæ°çæ¹å¼ï¼å®å¨æ¯è®©äººè§å¾é¾ä»¥ä½¿ç¨ï¼
ããimage
ããæ以æå°±å¨å®å®æ¹ç微信ç»å½provideråºç¡ä¸ï¼æç
§èªå·±çæ³æ³ï¼éæ°å®ç°äºä¸ä¸ªæ¥è§£å³æåç°çè¿äºé®é¢