{"id":1981,"date":"2025-06-10T19:32:06","date_gmt":"2025-06-10T11:32:06","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/wpcms\/wpdt\/1981.html"},"modified":"2025-06-10T19:32:06","modified_gmt":"2025-06-10T11:32:06","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8wordpress%e4%b8%ad%e6%b7%bb%e5%8a%a0oauth%e7%99%bb%e5%bd%95%ef%bc%88%e5%88%86%e6%ad%a5%e6%8c%87%e5%8d%97%ef%bc%89","status":"publish","type":"post","link":"https:\/\/www.zhaozhao123.cn\/wpcms\/post\/1981.html","title":{"rendered":"\u5982\u4f55\u5728WordPress\u4e2d\u6dfb\u52a0OAuth\u767b\u5f55\uff08\u5206\u6b65\u6307\u5357\uff09"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<p class=\"my-0\">Bug&#32534;&#35793;&#29422;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#22312;WordPress&#20013;&#23454;&#29616;OAuth&#30331;&#24405;&#21151;&#33021;&#65292;&#24744;&#39318;&#20808;&#38656;&#35201;&#20102;&#35299;WordPress&#30340;OAuth&#25554;&#20214;&#21644;&#20854;&#24037;&#20316;&#21407;&#29702;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#35814;&#32454;&#30340;&#20998;&#27493;&#25351;&#21335;&#65292;&#24110;&#21161;&#24744;&#22312;WordPress&#20013;&#35774;&#32622;OAuth&#30331;&#24405;&#12290;<\/p>\n<h3>1. &#30830;&#23450;&#38656;&#27714;<\/h3>\n<ul>\n<li><strong>&#30446;&#26631;<\/strong>: &#22312;WordPress&#32593;&#31449;&#19978;&#38598;&#25104;OAuth&#30331;&#24405;&#12290;<\/li>\n<li><strong>&#24179;&#21488;<\/strong>: WordPress 4.9&#25110;&#26356;&#39640;&#29256;&#26412;&#25903;&#25345;OAuth2.0&#12290;<\/li>\n<\/ul>\n<h3>2. &#23433;&#35013;&#24517;&#35201;&#30340;&#25554;&#20214;<\/h3>\n<p>&#39318;&#20808;&#65292;&#22312;&#24744;&#30340;WordPress&#21518;&#21488;&#23433;&#35013;&#24182;&#28608;&#27963;&#20197;&#19979;&#20004;&#20010;&#25554;&#20214;&#65306;<\/p>\n<ul>\n<li><strong>WP OAuth<\/strong> (<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly93b3JkcHJlc3Mub3JnL3BsdWdpbnMvd3Atb2F1dGgv\" rel=\"noopener noreferrer nofollow\">https:\/\/wordpress.org\/plugins\/wp-oauth\/<\/a>)<\/li>\n<li><strong>OAuth for Social Networks<\/strong> (<a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly93b3JkcHJlc3Mub3JnL3BsdWdpbnMvb2F1dGgtZm9yLXNvY2lhbC1uZXR3b3Jrcy8=\" rel=\"noopener noreferrer nofollow\">https:\/\/wordpress.org\/plugins\/oauth-for-social-networks\/<\/a>)<\/li>\n<\/ul>\n<p>&#36825;&#20004;&#20010;&#25554;&#20214;&#20998;&#21035;&#25552;&#20379;WordPress&#30340;OAuth&#22788;&#29702;&#21644;&#31038;&#20132;&#32593;&#32476;&#30340;&#25903;&#25345;&#12290;<\/p>\n<h3>3. &#37197;&#32622;OAuth&#25554;&#20214;<\/h3>\n<h4>a. &#35774;&#32622;OAuth&#26381;&#21153;&#22120;&#20449;&#24687;<\/h4>\n<ol>\n<li>&#30331;&#24405;&#21040;&#24744;&#30340;WordPress&#31649;&#29702;&#21518;&#21488;&#12290;<\/li>\n<li>&#23548;&#33322;&#21040;&ldquo;&#25554;&#20214;&rdquo; &gt; &ldquo;&#24050;&#23433;&#35013;&#25554;&#20214;&rdquo;&#65292;&#25214;&#21040;&#24182;&#28857;&#20987;&ldquo;WP OAuth&rdquo;&#12290;<\/li>\n<li>&#36827;&#20837;&ldquo;&#37197;&#32622;&rdquo;&#39029;&#38754;&#65292;&#36755;&#20837;&#24744;&#30340;OAuth&#26381;&#21153;&#22120;&#30340;&#20449;&#24687;&#65306;\n<ul>\n<li><strong>&#23458;&#25143;&#31471;ID<\/strong>&#65306;&#20174;OAuth&#25552;&#20379;&#21830;&#33719;&#21462;&#65292;&#36890;&#24120;&#29992;&#20110;&#26631;&#35782;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#12290;<\/li>\n<li><strong>&#23458;&#25143;&#31471;&#31192;&#23494;<\/strong>&#65306;OAuth&#25552;&#20379;&#21830;&#20250;&#20026;&#24744;&#29983;&#25104;&#36825;&#20010;&#20540;&#12290;<\/li>\n<li><strong>&#25480;&#26435;URL<\/strong>&#65306;&#36890;&#24120;&#26159;<code>https:\/\/your-site.com\/auth\/oauth\/callback<\/code><\/li>\n<li><strong>&#20196;&#29260;URL<\/strong>&#65306;&#36890;&#24120;&#26159;<code>https:\/\/your-site.com\/api\/token<\/code><\/li>\n<\/ul><\/li>\n<\/ol>\n<p>&#30830;&#20445;&#25152;&#26377;&#23383;&#27573;&#37117;&#27491;&#30830;&#22635;&#20889;&#65292;&#29305;&#21035;&#26159;<code>Authorization URL<\/code>&#21644;<code>Token URL<\/code>&#65292;&#22240;&#20026;&#36825;&#20123;&#26159;&#19982;&#29992;&#25143;&#20132;&#20114;&#30340;&#20851;&#38190;&#37096;&#20998;&#12290;<\/p>\n<h4>b. &#37197;&#32622;&#31038;&#20132;&#23186;&#20307;&#38598;&#25104;<\/h4>\n<p>&#25509;&#19979;&#26469;&#65292;&#37197;&#32622;&#24744;&#24819;&#35201;&#36830;&#25509;&#30340;&#31038;&#20132;&#23186;&#20307;&#24179;&#21488;&#65306;<\/p>\n<ol>\n<li>&#21516;&#26679;&#22312;&ldquo;&#25554;&#20214;&rdquo; &gt; &ldquo;&#24050;&#23433;&#35013;&#25554;&#20214;&rdquo;&#65292;&#25214;&#21040;&#24182;&#28857;&#20987;&ldquo;OAuth for Social Networks&rdquo;&#12290;<\/li>\n<li>&#36827;&#20837;&ldquo;&#37197;&#32622;&rdquo;&#39029;&#38754;&#65292;&#36873;&#25321;&#24744;&#35201;&#38598;&#25104;&#30340;&#31038;&#20132;&#23186;&#20307;&#24179;&#21488;&#12290;<\/li>\n<li>&#26681;&#25454;&#27599;&#20010;&#24179;&#21488;&#30340;&#35201;&#27714;&#22635;&#20889;&#30456;&#24212;&#30340;&#37197;&#32622;&#20449;&#24687;&#12290;<\/li>\n<\/ol>\n<p>&#20363;&#22914;&#65292;&#22914;&#26524;&#24744;&#36873;&#25321;&#38598;&#25104;Facebook&#65292;&#24744;&#21487;&#33021;&#38656;&#35201;&#22635;&#20889;&#65306;<\/p>\n<ul>\n<li><strong>App ID<\/strong>: Facebook&#25552;&#20379;&#30340;&#24212;&#29992;ID&#12290;<\/li>\n<li><strong>App Secret<\/strong>: Facebook&#25552;&#20379;&#30340;&#24212;&#29992;&#23494;&#38053;&#12290;<\/li>\n<li><strong>Redirect URI<\/strong>: OAuth&#25554;&#20214;&#20013;&#23450;&#20041;&#30340;&#25480;&#26435;&#22238;&#35843;URL&#12290;<\/li>\n<\/ul>\n<h3>4. &#27979;&#35797;OAuth&#27969;&#31243;<\/h3>\n<p>&#23436;&#25104;&#19978;&#36848;&#37197;&#32622;&#21518;&#65292;&#24744;&#21487;&#20197;&#23581;&#35797;&#36890;&#36807;OAuth&#26469;&#30331;&#24405;&#24744;&#30340;WordPress&#36134;&#25143;&#12290;&#35775;&#38382;&#24744;&#30340;&#31449;&#28857;&#24182;&#22312;&#24377;&#20986;&#31383;&#21475;&#20013;&#36873;&#25321;&ldquo;&#30331;&#24405;&rdquo;&#25353;&#38062;&#65292;&#28982;&#21518;&#25353;&#29031;&#25552;&#31034;&#25805;&#20316;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#27491;&#22312;&#20351;&#29992;Twitter&#20316;&#20026;&#25105;&#20204;&#30340;OAuth&#25552;&#20379;&#21830;&#65292;&#20197;&#19979;&#26159;&#23436;&#25972;&#30340;&#20195;&#30721;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#28155;&#21152;&#19968;&#20010;&#20989;&#25968;&#26469;&#22788;&#29702;OAuth&#35831;&#27714;\nfunction wp_oauth_twitter_authorize() {\n    \/\/ &#26816;&#26597;&#26159;&#21542;&#24050;&#32463;&#35774;&#32622;&#20102;OAuth&#37197;&#32622;\n    if (!isset($_GET['oauth_token'])) {\n        \/\/ &#22914;&#26524;&#27809;&#26377;token&#65292;&#21017;&#26174;&#31034;OAuth&#25480;&#26435;&#38142;&#25509;\n        echo '&lt;a href=\"https:\/\/' . $_SERVER['HTTP_HOST'] . '\/wp-admin\/admin.php?page=wp-oauth&amp;step=authorize\" class=\"button\"&gt;Authorize with Twitter&lt;\/a&gt;';\n    } else {\n        \/\/ &#22914;&#26524;&#26377;token&#65292;&#21017;&#26174;&#31034;&#30331;&#24405;&#30028;&#38754;\n        $consumer = array(\n            'key' =&gt; 'YOUR_TWITTER_CONSUMER_KEY',\n            'secret' =&gt; 'YOUR_TWITTER_CONSUMER_SECRET'\n        );\n\n        $request_token_url = \"https:\/\/api.twitter.com\/oauth\/request_token\";\n        $access_token_url = \"https:\/\/api.twitter.com\/oauth\/access_token\";\n        $authorize_url = \"https:\/\/api.twitter.com\/oauth\/authorize?oauth_token=\";\n\n        \/\/ &#21457;&#36865;&#35831;&#27714;&#20197;&#33719;&#21462;&#25480;&#26435;&#30721;\n        $response = wp_remote_get($authorize_url . $_GET['oauth_token']);\n        $body = wp_remote_retrieve_body($response);\n        parse_str($body, $params);\n\n        \/\/ &#20351;&#29992;&#33719;&#21462;&#21040;&#30340;&#25480;&#26435;&#30721;&#36827;&#34892;OAuth&#39564;&#35777;\n        $curl = curl_init();\n        curl_setopt_array($curl, array(\n            CURLOPT_URL =&gt; $access_token_url,\n            CURLOPT_RETURNTRANSFER =&gt; true,\n            CURLOPT_POST =&gt; true,\n            CURLOPT_POSTFIELDS =&gt; http_build_query(array('oauth_consumer_key' =&gt; $consumer['key'], \n                                                         'oauth_nonce' =&gt; time(), \n                                                         'oauth_signature_method' =&gt; 'HMAC-SHA1', \n                                                         'oauth_timestamp' =&gt; time(),\n                                                         'oauth_token' =&gt; $params['oauth_token'],\n                                                         'oauth_version' =&gt; '1.0')),\n            CURLOPT_HTTPHEADER =&gt; array('Content-Type: application\/x-www-form-urlencoded'),\n            CURLOPT_SSL_VERIFYPEER =&gt; false,\n            CURLOPT_TIMEOUT =&gt; 5\n        ));\n        $result = curl_exec($curl);\n        curl_close($curl);\n\n        \/\/ &#35299;&#26512;&#32467;&#26524;&#20197;&#25552;&#21462;access token\n        $data = json_decode($result, true);\n        if ($data) {\n            $access_token = $data-&gt;oauth_token;\n            $access_secret = $data-&gt;oauth_token_secret;\n\n            \/\/ &#20351;&#29992;access token&#36827;&#34892;&#20854;&#20182;&#25805;&#20316;\n            \/\/ ...\n        }\n    }\n}\nadd_action('admin_notices', 'wp_oauth_twitter_authorize');<\/code><\/pre>\n<h3>&#25928;&#26524;&#35828;&#26126;<\/h3>\n<p>&#35813;&#20195;&#30721;&#23454;&#29616;&#20102;&#22312;WordPress&#20013;&#20351;&#29992;Twitter OAuth&#30340;&#31616;&#21333;&#27969;&#31243;&#12290;&#24403;&#29992;&#25143;&#28857;&#20987;&ldquo;Authorize with Twitter&rdquo;&#38142;&#25509;&#26102;&#65292;&#20182;&#20204;&#20250;&#34987;&#37325;&#23450;&#21521;&#21040;Twitter&#30340;OAuth&#25480;&#26435;&#39029;&#38754;&#65292;&#20801;&#35768;&#20182;&#20204;&#25480;&#20104;WordPress&#35775;&#38382;&#20182;&#20204;&#30340;Twitter&#24080;&#25143;&#26435;&#38480;&#12290;&#19968;&#26086;&#25480;&#26435;&#25104;&#21151;&#65292;&#29992;&#25143;&#23558;&#34987;&#37325;&#23450;&#21521;&#22238;WordPress&#65292;&#27492;&#26102;&#20182;&#20204;&#21487;&#20197;&#20351;&#29992;Twitter&#30340;API&#25110;&#20854;&#20182;&#26381;&#21153;&#26469;&#26356;&#26032;&#20182;&#20204;&#30340;WordPress&#20010;&#20154;&#36164;&#26009;&#31561;&#12290;<\/p>\n<p>&#35831;&#27880;&#24847;&#65292;&#36825;&#21482;&#26159;&#19968;&#20010;&#22522;&#26412;&#31034;&#20363;&#65292;&#23454;&#38469;&#37096;&#32626;&#26102;&#24212;&#26681;&#25454;&#20855;&#20307;&#24773;&#20917;&#36827;&#34892;&#35843;&#25972;&#21644;&#20248;&#21270;&#12290;&#27492;&#22806;&#65292;&#30830;&#20445;&#36981;&#24490;&#21508;&#31038;&#20132;&#23186;&#20307;&#25552;&#20379;&#21830;&#30340;&#26381;&#21153;&#26465;&#27454;&#21644;&#38544;&#31169;&#25919;&#31574;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;&#21069;&#30340;Bug&#35821;&#27861;&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<p class=\"my-0\">&#40657;&#26495;&#21069;&#30340;Bug&#35821;&#27861;&#35762;&#24072;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<h3>&#22914;&#20309;&#22312;WordPress&#20013;&#28155;&#21152;OAuth&#30331;&#24405;&#65288;&#20998;&#27493;&#25351;&#21335;&#65289;<\/h3>\n<h4>1. &#23433;&#35013;&#24182;&#37197;&#32622;OAuth&#26381;&#21153;&#22120;<\/h4>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#19968;&#20010;OAuth&#26381;&#21153;&#22120;&#12290;&#26368;&#24120;&#29992;&#30340;&#21253;&#25324;Google OAuth&#21644;Facebook OAuth&#12290;&#36825;&#37324;&#25105;&#20204;&#23558;&#20351;&#29992;Google OAuth&#20316;&#20026;&#31034;&#20363;&#12290;<\/p>\n<h4>2. &#21019;&#24314;OAuth&#23458;&#25143;&#31471;ID&#19982;&#23494;&#38053;<\/h4>\n<p>&#35775;&#38382; <a href=\"https:\/\/www.zhaozhao123.cn\/skin\/go?url=aHR0cHM6Ly9jb25zb2xlLmRldmVsb3BlcnMuZ29vZ2xlLmNvbS8=\" rel=\"noopener noreferrer nofollow\">Google API Console<\/a> &#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#39033;&#30446;&#65292;&#28982;&#21518;&#21019;&#24314;&#19968;&#20010;&#26032;&#24212;&#29992;&#65292;&#24182;&#36873;&#25321;&ldquo;OAuth&rdquo;&#36873;&#39033;&#21345;&#26469;&#29983;&#25104;&#23458;&#25143;&#31471;ID&#21644;&#23494;&#38053;&#12290;<\/p>\n<h4>3. &#35774;&#32622;OAuth&#37197;&#32622;<\/h4>\n<p>&#22312;&#20320;&#30340;WordPress&#20027;&#39064;&#25110;&#25554;&#20214;&#20013;&#35774;&#32622;OAuth&#37197;&#32622;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;WordPress&#30340;<code>wp-admin<\/code>&#30446;&#24405;&#19979;&#30340;<code>wp-config.php<\/code>&#25991;&#20214;&#26469;&#36827;&#34892;&#37197;&#32622;&#12290;<\/p>\n<h4>4. &#28155;&#21152;GitHub OAuth&#30331;&#24405;&#21151;&#33021;<\/h4>\n<p>&#35201;&#23454;&#29616;GitHub OAuth&#30331;&#24405;&#65292;&#20320;&#38656;&#35201;&#22312;WordPress&#30340;&#29992;&#25143;&#27880;&#20876;&#39029;&#38754;&#20013;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ &#21152;&#36733;&#24517;&#35201;&#30340;&#24211;\nrequire_once plugin_dir_path(__FILE__) . 'lib\/oauth.php';\n\n\/\/ &#37197;&#32622;OAuth&#23458;&#25143;&#31471;&#20449;&#24687;\n$oauth = new Google_OAuth();\n\n\/\/ &#33719;&#21462;&#29992;&#25143;&#25480;&#26435;&#35831;&#27714;&#38142;&#25509;\n$url = $oauth-&gt;get_authorize_url('http:\/\/example.com');\n\n\/\/ &#26174;&#31034;&#25480;&#26435;&#35831;&#27714;&#38142;&#25509;\necho '&lt;a href=\"' . $url . '\"&gt;&#28857;&#20987;&#25480;&#26435;&lt;\/a&gt;';\n\n\/\/ &#33719;&#21462;&#29992;&#25143;&#36523;&#20221;&#39564;&#35777;&#20196;&#29260;\nif (isset($_GET['code'])) {\n    \/\/ &#36830;&#25509;&#21040;OAuth&#26381;&#21153;&#22120;&#33719;&#21462;&#29992;&#25143;&#25968;&#25454;\n    $token = $oauth-&gt;get_access_token($_GET['code']);\n\n    \/\/ &#26356;&#26032;&#29992;&#25143;&#25968;&#25454;&#24211;&#20013;&#30340;&#26435;&#38480;&#20449;&#24687;\n    update_user_meta($token['user_id'], 'google_oauth', $token['access_token']);\n}<\/code><\/pre>\n<p>&#27880;&#24847;&#65306;&#35831;&#23558;<code>http:\/\/example.com<\/code>&#26367;&#25442;&#20026;&#23454;&#38469;&#30340;URL&#65292;&#20197;&#25351;&#21521;&#24744;&#30340;GitHub&#25480;&#26435;&#39029;&#12290;<\/p>\n<h4>5. &#29992;&#25143;&#30331;&#24405;&#22788;&#29702;<\/h4>\n<p>&#19968;&#26086;&#29992;&#25143;&#25104;&#21151;&#30331;&#24405;&#65292;&#20320;&#21487;&#20197;&#22312;WordPress&#21518;&#21488;&#31649;&#29702;&#30028;&#38754;&#26597;&#30475;&#29992;&#25143;&#30340;<code>google_oauth<\/code>&#23383;&#27573;&#12290;&#22914;&#26524;&#35813;&#23383;&#27573;&#23384;&#22312;&#65292;&#34920;&#26126;&#29992;&#25143;&#24050;&#36890;&#36807;OAuth&#30331;&#24405;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;<\/h4>\n<p>&#20197;&#19979;&#26159;&#23436;&#25972;&#30340;GitHub OAuth&#30331;&#24405;&#27969;&#31243;&#30340;&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/**\n * Add a GitHub login form to the WordPress login page.\n *\/\nfunction wpse66799_add_github_login() {\n    global $wpdb;\n\n    if (!current_user_can( 'edit_posts' ) &amp;&amp; !current_user_can( 'edit_pages' )) {\n        return;\n    }\n\n    $login_url = get_permalink(get_option('login_page'));\n    $login_url = add_query_arg(array(\n        'next' =&gt; home_url('\/'),\n        'redirect_to' =&gt; urlencode(esc_attr(home_url('\/')))\n    ), $login_url);\n\n    $login_form = sprintf('&lt;form method=\"POST\" action=\"%s\" id=\"github-login-form\"&gt;%s&lt;\/form&gt;', $login_url, '&lt;input type=\"hidden\" name=\"login_method\" value=\"github\" \/&gt;');\n    echo '&lt;div class=\"login-wrap\"&gt;&lt;div class=\"login-content\"&gt;';\n    echo $login_form;\n    echo '&lt;\/div&gt;&lt;\/div&gt;';\n}\n\nadd_action('login_form', 'wpse66799_add_github_login');\n?&gt;<\/code><\/pre>\n<p>&#36825;&#20010;&#33050;&#26412;&#20250;&#26174;&#31034;&#19968;&#20010;&#24102;&#26377;GitHub&#30331;&#24405;&#25353;&#38062;&#30340;&#34920;&#21333;&#65292;&#24403;&#29992;&#25143;&#28857;&#20987;&#26102;&#65292;&#20182;&#20204;&#23558;&#34987;&#37325;&#23450;&#21521;&#21040;GitHub&#25480;&#26435;&#39029;&#38754;&#12290;&#36825;&#19968;&#27493;&#39588;&#38656;&#35201;&#30830;&#20445;&#29992;&#25143;&#24050;&#32463;&#21516;&#24847;&#20102;GitHub API&#26465;&#27454;&#12290;&#19968;&#26086;&#29992;&#25143;&#23436;&#25104;&#25480;&#26435;&#65292;&#20182;&#20204;&#20250;&#34987;&#37325;&#23450;&#21521;&#22238;WordPress&#30331;&#24405;&#39029;&#38754;&#65292;&#27492;&#26102;&#20182;&#20204;&#30340;GitHub&#20973;&#25454;&#23558;&#22312;&#21518;&#21488;&#26356;&#26032;&#12290;<\/p>\n<h4>&#32467;&#35770;<\/h4>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312;WordPress&#20013;&#28155;&#21152;OAuth&#30331;&#24405;&#30340;&#22522;&#26412;&#27493;&#39588;&#12290;&#35831;&#27880;&#24847;&#65292;&#20026;&#20102;&#20445;&#25252;&#29992;&#25143;&#38544;&#31169;&#65292;&#20320;&#21487;&#33021;&#38656;&#35201;&#32771;&#34385;&#22914;&#20309;&#23433;&#20840;&#22320;&#23384;&#20648;&#21644;&#20256;&#36755;&#36825;&#20123;&#20973;&#25454;&#12290;&#27492;&#22806;&#65292;&#26681;&#25454;&#20320;&#30340;&#20855;&#20307;&#38656;&#27714;&#65292;&#20320;&#21487;&#33021;&#36824;&#38656;&#35201;&#36827;&#19968;&#27493;&#23450;&#21046;&#30331;&#24405;&#36807;&#31243;&#65292;&#20363;&#22914;&#33258;&#23450;&#20041;&#30331;&#24405;&#39029;&#38754;&#12289;&#22788;&#29702;&#38169;&#35823;&#24773;&#20917;&#31561;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#35201;&#22312;WordPress&#20013;&#23454;&#29616;OAuth&#30331;&#24405;&#21151;&#33021;&#65292;&#24744;&#39318;&#20808;&#38656;&#038;#3520..<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[59],"tuisongtax":[],"class_list":["post-1981","post","type-post","status-publish","format-standard","hentry","category-wpdt","tag-pzjc"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts\/1981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/comments?post=1981"}],"version-history":[{"count":0,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/posts\/1981\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/media?parent=1981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/categories?post=1981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tags?post=1981"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/wpcms\/wp-json\/wp\/v2\/tuisongtax?post=1981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}