This repository has been archived by the owner on Aug 4, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 80
/
wechat-inner.php
72 lines (58 loc) · 2.76 KB
/
wechat-inner.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
define('WXMP_APPID','');
define('WXMP_APPSECRET','');
define('WXMP_KEY','weixin_uid');
require( dirname(__FILE__) . '/../../../wp-load.php' );
// get access token
function get_mp_access_token( $code = null ){
if (!$code) return;
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . WXMP_APPID . '&secret=' . WXMP_APPSECRET . '&code=' . $code . '&grant_type=authorization_code';
$response = file_get_contents( $url );
return json_decode($response,true);
}
function mpwechat_oauth(){
if (!isset($_GET['code'])) wp_die('empty code');
$code = $_GET['code'];
$json_token = get_mp_access_token($code);
if (!$json_token['openid']) wp_die('授权失败,请尝试重新授权');
$info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $json_token['access_token'] . '&openid=' . $json_token['openid'];
$user_info = json_decode(file_get_contents($info_url),true);
$weixin_id = $user_info["openid"];
if(is_user_logged_in()){
$this_user = wp_get_current_user();
update_user_meta($this_user->ID ,WXMP_KEY,$weixin_id);
update_user_meta($this_user->ID ,'weixin_avatar',$user_info['headimgurl']);
wp_redirect( home_url() );
}else{
$oauth_user = get_users(array('meta_key'=>WXMP_KEY,'meta_value'=>$weixin_id));
if(is_wp_error($oauth_user) || !count($oauth_user)){
$username = $user_info['nickname'];
$login_name = 'wx' . wp_create_nonce($weixin_id);
$random_password = wp_generate_password( $length=12, $include_standard_special_chars=false );
$userdata=array(
'user_login' => $login_name,
'display_name' => $username,
'user_pass' => $random_password,
'nickname' => $username
);
$user_id = wp_insert_user( $userdata );
wp_signon(array('user_login'=>$login_name,'user_password'=>$random_password),false);
wp_set_auth_cookie($user_id,true);
update_user_meta($user_id ,WXMP_KEY,$weixin_id);
update_user_meta($user_id ,'weixin_avatar',$user_info['headimgurl']);
wp_redirect( home_url() );
}else{
wp_set_auth_cookie($oauth_user[0]->ID,true);
$reddd = isset($_GET['state']) ? $_GET['state'] : home_url();
wp_redirect( $reddd );
}
}
}
if (isset($_GET['code'])){
mpwechat_oauth();
}
function mpwechat_oauth_url(){
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='. WXMP_APPID .'&redirect_uri='. urlencode ( get_template_directory_uri() . '/' ) .'wechat-inner.php&response_type=code&scope=snsapi_userinfo&state=' . urlencode ( $_SERVER["HTTP_REFERER"] ) . '#wechat_redirect';
return $url;
}
echo mpwechat_oauth_url();