Example #1
0
function connect_denglu()
{
    if ($_GET['dl_type'] == 'create') {
        // 对接open.denglu.cc
        if (current_user_can('manage_options')) {
            return open_denglu_cc($_GET['token'], $_GET['mediaUserID']);
        } else {
            return wp_die('对不起,您的用户权限不够,请用管理员帐号登录操作!');
        }
    } else {
        $redirect_to = isset($_GET['redirect_url']) ? $_GET['redirect_url'] : "";
        if (is_user_logged_in()) {
            // 同步绑定
            if (wp_connect_get_cookie("wp_connect_cookie_bind") == "sync") {
                $media = rtrim(substr($_GET['token'], 0, 2), '-');
                $name = array('3' => 'sina', '4' => 'qq', '5' => 'sohu', '6' => 'netease', '7' => 'renren', '17' => 'tianya');
                if ($name[$media]) {
                    $tok = 'wptm_' . $name[$media];
                    if ($redirect_to == admin_url('options-general.php?page=wp-connect')) {
                        update_option($tok, array('mediaUserID' => $_GET['mediaUserID']));
                    } else {
                        if ($redirect_to == admin_url('profile.php')) {
                            $wpuid = get_current_user_id();
                        } else {
                            $parse_str = parse_url_detail($redirect_to);
                            $wpuid = $parse_str['user_id'];
                        }
                        if ($wpuid) {
                            update_usermeta($wpuid, $tok, array('mediaUserID' => $_GET['mediaUserID']));
                        }
                    }
                }
                return wp_connect_clear_cookie("wp_connect_cookie_bind");
            }
        }
        $user = denglu_userInfo();
        // return var_dump($user);
        if ($username = $user['mediaUserID']) {
            $homepage = $user['homepage'];
            $mediaID = $user['mediaID'];
            $tid = get_tid($mediaID);
            $weibo = get_weibo($tid);
            $mid = str_replace('tid', 'mid', $tid);
            if ($homepage) {
                $id = $weibo[1] . 'id';
                if ($id == 'dtid') {
                    // douban
                    if (strpos($user['profileImageUrl'], 'user_normal.jpg') === false) {
                        $path = explode('/', $user['profileImageUrl']);
                        $douban_uid = (int) substr($path[4], 1);
                    }
                }
                $userid = str_replace($weibo[3], '', $homepage);
            } elseif ($tid == 'qqtid') {
                $id = $weibo[1] . 'id';
                $path = explode('/', $user['profileImageUrl']);
                $userid = $path[5];
                $appid = $path[4];
            } else {
                $id = $mid;
                $userid = $username;
            }
            if ($user['email']) {
                $email = $user['email'];
                if ($id == 'ntid') {
                    // netease
                    $uid = ifabc(email_exists($email), get_user_by_meta_value($id, $userid), get_user_by_meta_value($mid, $username));
                } else {
                    // taobao,msn,facebook
                    $uid = ifab(email_exists($email), get_user_by_meta_value($id, $userid));
                }
            } else {
                $domain = ifab($weibo[4], 'denglu.cc');
                if ($homepage) {
                    $email = $userid . '@' . $domain;
                } elseif ($tid == 'qqtid') {
                    $email = $appid . '/' . $userid . '@qzone.qq.com';
                } else {
                    $email = $username . '@' . $domain;
                }
                if ($id == $mid) {
                    // google,yahoo,baidu,netease163,360,alipay
                    $uid = get_user_by_meta_value($id, $userid);
                } elseif ($id == 'dtid') {
                    // douban
                    if ($douban_uid && $douban_uid != $userid) {
                        $uid = ifab(get_user_by_meta_value($id, $douban_uid), get_user_by_meta_value($id, $userid));
                        $userid = $douban_uid;
                        // old bug
                        $email = $userid . '@' . $domain;
                    } else {
                        $uid = get_user_by_meta_value($id, $userid);
                    }
                } else {
                    // sina,tqq,sohu,netease,renren,kaixin,tianya,twitter,qq
                    $uid = ifab(get_user_by_meta_value($id, $userid), email_exists($email));
                }
            }
            if (is_user_logged_in()) {
                // V2.4.3,登录绑定
                if ($redirect_to == admin_url('profile.php')) {
                    $wpuid = get_current_user_id();
                } else {
                    $parse_str = parse_url_detail($redirect_to);
                    $wpuid = $parse_str['user_id'];
                }
                if ($uid && $wpuid != $uid) {
                    $userinfo = wp_get_user_info($uid);
                    $user_login = $userinfo['user_login'];
                    wp_die("很遗憾!该帐号已被用户名 {$user_login} 绑定,您可以用该 <a href=\"" . wp_logout_url() . "\">用户名</a> 登录,并到 <a href=\"" . admin_url('profile.php') . "\">我的资料</a> 页面解除绑定,再进行绑定该帐号!<strong>如果不能成功,请删除那个WP帐号,再进行绑定!</strong> <a href='{$redirect_to}'>返回</a>");
                } else {
                    update_usermeta($wpuid, $mid, $username);
                    if ($homepage || $tid == 'qqtid') {
                        // sina,tqq,sohu,netease,renren,kaixin,douban,tianya,twitter,facebook,qq
                        update_usermeta($wpuid, $weibo[1] . 'id', $userid);
                        if ($tid == 'qqtid') {
                            update_usermeta($wpuid, $tid, $user['profileImageUrl']);
                        }
                        if (in_array($tid, array('qtid', 'stid', 'ntid', 'shtid', 'ttid'))) {
                            // 微博帐号
                            $nickname = get_user_meta($wpuid, 'login_name', true);
                            $nickname[$weibo[0]] = $tid == 'qtid' || $tid == 'ttid' ? $userid : $user['screenName'];
                            update_usermeta($wpuid, 'login_name', $nickname);
                        }
                    }
                }
            } else {
                $url = ifab($user['url'], $homepage);
                $userinfo = array($tid, $username, $user['screenName'], $user['profileImageUrl'], $url, $userid, $username);
                //tid,username,nick,head,url,userid,mediaUserID
                if ($uid) {
                    wp_connect_login($userinfo, $email, $uid);
                } elseif ($_GET['dl_type'] == 'comment') {
                    // 从评论框登录,跳过强制填写注册信息。V2.3.3
                    $userinfo[1] = ifuser($userinfo[1]);
                    wp_connect_login($userinfo, $email, '', true);
                } else {
                    wp_connect_login($userinfo, $email);
                }
            }
        }
    }
}
function wp_connect_netease()
{
    if (!class_exists('neteaseOAuth')) {
        include dirname(__FILE__) . '/OAuth/netease_OAuth.php';
    }
    $to = new neteaseOAuth(APP_KEY, APP_SECRET, $_GET['oauth_token'], $_SESSION['oauth_token_secret']);
    $tok = $to->getAccessToken($_REQUEST['oauth_verifier']);
    $to = new neteaseOAuth(APP_KEY, APP_SECRET, $tok['oauth_token'], $tok['oauth_token_secret']);
    $netease = $to->OAuthRequest('http://api.t.163.com/account/verify_credentials.json', 'GET', array());
    if ($netease == "no auth") {
        return wp_noauth();
    }
    $netease = json_decode($netease);
    $username = $netease->screen_name;
    $old_email = $username . '@t.163.com';
    $email = $netease->email;
    $oid = $netease->id;
    $tid = "ntid";
    $uid = ifabc(email_exists($email), email_exists($old_email), get_user_by_meta_value('neteaseid', $username));
    $userinfo = array($tid, $username, $netease->name, $netease->profile_image_url, $netease->url, $username, $tok['oauth_token'], $tok['oauth_token_secret']);
    if ($uid) {
        wp_connect_login($userinfo, $email, $uid);
    } else {
        wp_connect_login($userinfo, $email);
    }
}
Example #3
0
     }
     break;
 case "netease":
     $to = new neteaseClient(WEIBO_APP_KEY, WEIBO_SECRET, $last_key['oauth_token'], $last_key['oauth_token_secret']);
     $result = $to->verify_credentials();
     $only_id = $username = $result['screen_name'];
     // return var_dump($result);
     if ($only_id) {
         $tid = "ntid";
         $id = 'neteaseid';
         $email = $result['email'];
         $old_email = $only_id . '@t.163.com';
         $name = $at = $result['name'];
         $url = 'http://t.163.com/' . $only_id;
         $head = $result['profile_image_url'];
         $uid = ifabc(email_exists($email), email_exists($old_email), get_user_by_meta_value($id, $only_id));
     }
     break;
 case "douban":
     $to = new doubanOAuth(WEIBO_APP_KEY, WEIBO_SECRET, $last_key['oauth_token'], $last_key['oauth_token_secret']);
     $douban = $to->OAuthRequest('http://api.douban.com/people/%40me', array(), 'GET');
     $douban = simplexml_load_string($douban);
     $douban_xmlns = $douban->children('http://www.douban.com/xmlns/');
     $only_id = str_replace("http://api.douban.com/people/", "", $douban->id);
     // return var_dump($douban);
     if ($only_id) {
         $tid = $id = 'dtid';
         $email = $only_id . '@douban.com';
         $username = $douban_xmlns->uid;
         $name = $douban->title;
         $url = "http://www.douban.com/people/" . $username;