'GitHub', 'gitee' => 'Gitee', 'qq' => 'QQ', 'google' => 'Google', 'weibo' => 'Weibo', 'weixin' => 'WeChat', 'baidu' => 'Baidu', 'alipay' => 'Alipay', ]; $icons = [ 'github' => aksrt_brand_icon('github'), 'gitee' => aksrt_brand_icon('gitee'), 'qq' => aksrt_brand_icon('qq'), 'google' => aksrt_brand_icon('google'), 'weibo' => aksrt_brand_icon('weibo'), 'weixin' => aksrt_brand_icon('weixin'), 'baidu' => aksrt_brand_icon('baidu'), 'alipay' => aksrt_brand_icon('alipay'), ]; $bindings = []; foreach ($bound_list as $binding) { if (in_array($binding, ['github', 'gitee', 'qq', 'google', 'weibo', 'weixin', 'baidu', 'alipay'], true) && !empty($providers[$binding]['enabled'])) { $bindings[] = [ 'key' => $binding, 'name' => $platform_names[$binding] ?? ucfirst($binding), 'icon' => $icons[$binding] ?? '', ]; } } $available = []; foreach (['github', 'gitee', 'qq', 'google', 'weibo', 'weixin', 'baidu', 'alipay'] as $key) { if (in_array($key, $bound_list, true)) continue; if (empty($providers[$key]['enabled']) || empty($providers[$key]['client_id'])) continue; $url = $this->get_auth_url($key, 'bind'); if (empty($url)) continue; $available[] = [ 'key' => $key, 'name' => $platform_names[$key], 'icon' => $icons[$key] ?? '', 'url' => esc_url($url), ]; } return [ 'bindings' => $bindings, 'available' => $available, ]; } public function profile_bindings(\WP_User $user): void { $bindings = get_user_meta($user->ID, 'aksrt_oauth_bindings', true) ?: []; if (empty($bindings)) return; $unbind_nonce = wp_create_nonce('aksrt_oauth_unbind'); ?>

✓
true]); } private function find_user_by_provider(string $provider, string $provider_id): ?\WP_User { if (empty($provider_id)) return null; $users = get_users([ 'meta_key' => "aksrt_{$provider}_id", 'meta_value' => $provider_id, 'number' => 1, ]); return !empty($users[0]) ? $users[0] : null; } private function bind_provider_to_user(int $user_id, string $provider, array $user_data): void { if (!empty($user_data['provider_id'])) { update_user_meta($user_id, "aksrt_{$provider}_id", $user_data['provider_id']); } $bindings = get_user_meta($user_id, 'aksrt_oauth_bindings', true) ?: []; if (!is_array($bindings)) $bindings = []; if (!in_array($provider, $bindings, true)) { $bindings[] = $provider; update_user_meta($user_id, 'aksrt_oauth_bindings', $bindings); } if (!empty($user_data['avatar_url'])) { update_user_meta($user_id, 'aksrt_oauth_avatar', esc_url_raw($user_data['avatar_url'])); } } private function get_profile_url(): string { if (function_exists('aksrt_get_user_center_url')) { return aksrt_get_user_center_url(); } $user = wp_get_current_user(); if ($user->ID) { return home_url('/user/' . $user->user_nicename . '/'); } return home_url('/'); } }