【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能_第1頁
【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能_第2頁
【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能_第3頁
【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能_第4頁
【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】PHP實(shí)現(xiàn)微信關(guān)注公眾號掃碼登錄功能

PHP微信掃碼登錄看起來簡單,但做起來有點(diǎn)復(fù)雜,微信接口的坑有點(diǎn)多,稍不注意,就費(fèi)很多時間。PHP判斷是否首次關(guān)注公眾號,掃碼關(guān)注公眾號獲取微信用戶頭像、openid和省市等信息源碼。

第一步:獲取關(guān)注二維碼ticket,并且傳參二維碼qrcode表主鍵id

$sql

=

"INSERT

INTO

`qrcode`

(`addtime`)

VALUES

('"

.

time()

.

"')";

mysql_query($sql);

$scene_id

=

mysql_insert_id();

$url

=

'/cgi-bin/token?grant_type=client_credential&appid='

.

$appid

.

'&secret='

.

$appsecret;

$access_token_array

=

json_decode(curlGet($url),

true);

$access_token

=

$access_token_array['access_token'];

//echo

$access_token;exit;/project/wxvalid/index.php

$qrcode_url

=

'/cgi-bin/qrcode/create?access_token='

.

$access_token;

$post_data

=

array();

$post_data['expire_seconds']

=

3600

*

24;

//有效時間

$post_data['action_name']

=

'QR_SCENE';

$post_data['action_info']['scene']['scene_id']

=

$scene_id;

//傳參用戶uid,微信端可獲取

$json

=

curlPost($qrcode_url,

json_encode($post_data));

if

(!$json['errcode'])

{

$ticket

=

$json['ticket'];

$ticket_img

=

'/cgi-bin/showqrcode?ticket='

.

urlencode($ticket);

}

else

{

echo

'發(fā)生錯誤:錯誤代碼

'

.

$json['errcode']

.

',微信返回錯誤信息:'

.

$json['errmsg'];

exit;

}

第二步:微信服務(wù)端接受數(shù)據(jù),并且用戶登錄信息

$postObj

=

simplexml_load_string($postStr,

'SimpleXMLElement',

LIBXML_NOCDATA);

$scene_id

=

str_replace("qrscene_",

"",

$postObj->EventKey);

$openid

=

$postObj->FromUserName;

//openid

$ToUserName

=

$postObj->ToUserName;

//轉(zhuǎn)換角色

$Event

=

strtolower($postObj->Event);

if

($Event

==

'subscribe')

{//首次關(guān)注

$is_first

=

0;

}

elseif

($Event

==

'scan')

{//已關(guān)注

$is_first

=

1;

}

$access_token

=

$this->getAccessToken();

$userinfo

=

$this->getUserinfo($openid,

$access_token);

$sql

=

"UPDATE

`qrcode`

SET

`openid`

=

'"

.

$openid

.

"',logintime='"

.

time()

.

"',is_first="

.

$is_first

.

",nickname='"

.

$userinfo['nickname']

.

"'"

.

",avatar='"

.

$userinfo['avatar']

.

"',sex='"

.

$userinfo['sex']

.

"',province='"

.

$userinfo['province']

.

"',city='"

.

$userinfo['city']

.

"',country='"

.

$userinfo['country']

.

"'

WHERE

`id`

="

.

$scene_id

.

"";

mysql_query($sql);

第三步:每隔2秒檢測是否關(guān)注微信公眾號

<script>

check_login();

function

check_login()

{

$.post("check_login.php",

{scene_id:

<?php

echo

$scene_id;

?>},

function(data)

{

var

attention

=

'首次關(guān)注';

if

(data.is_first

==

1)

{

attention

=

'已關(guān)注過';

}

if

(data.openid

!=

null)

{

alert("掃碼成功,openid為"

+

data.openid

+

"nickname:"

+

data.nickname);

location.reload();

}

else

{

setTimeout("check_login()",

2000);

}

},

"json");

}

</script>

通過微信openid和access_token獲取微信用戶信息,并存入表當(dāng)中的信息如下:

<tr>

<th>openid</th>

<th>昵稱</th>

<th>性別<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論