Heim Backend-Entwicklung PHP-Tutorial 微信公众平台会员注册机制:网页授权,得到code后在当前页面获取openid,js+php实现跨域请求

微信公众平台会员注册机制:网页授权,得到code后在当前页面获取openid,js+php实现跨域请求

Jun 23, 2016 pm 01:59 PM

笔者开发情景:
Nach dem Login kopieren

需要引导微信公众平台用户点击链接进入注册页面,在注册页面需要获取用户微信的openid。技术核心是需要借助网页授权,并且在得到授权code时通过js立刻获取openid。

网上关于网页授权后一步步获取openid的文章大多是理论步骤的解说,落实到代码上具体怎么尽可能快的拿到openid的内容很少。笔者十分愤怒,决定写下代码和大家分享


这个过程需要一个前端页面代码和一个后端辅助程序,我这里前端是html+js,后端是php。

直接上代码,代码里注释解释的比较清楚:

前端:index.html

&gt;<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><meta name="format-detection" content="telephone=no"><title>会员注册</title><script type="text/javascript" src="jquery.js"></script><script type="text/javascript"> function callback(result) {          alert('cucess');          alert(result);  //输出openid    }      function getQueryString(name) {    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");    var r = window.location.search.substr(1).match(reg);    if (r != null) return unescape(r[2]); return null;    }var code = getQueryString("code");$.ajax({       async: false,       url: "http://arvon2012.sinaapp.com/oauth2.php", //这是我的服务端处理文件php的      type: "GET",       //下面几行是jsoup,如果去掉下面几行的注释,后端对应的返回结果也要去掉注释      // dataType: 'jsonp',       // jsonp: 'callback', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.       // jsonpCallback:'callback',      data: {code:code}, //传递本页面获取的code到后台,以便后台获取openid      timeout: 5000,       success: function (result) {         callback(result);      },       error: function (jqXHR, textStatus, errorThrown) {           alert(textStatus);       }   });</script>
Nach dem Login kopieren


下面是服务端对应的代码,oauth2.php

<?php $code = $_GET['code'];//前端传来的code值$appid = "xxxxxxxxxxxxxxxx";$appsecret = "xxxxxxxxxxxxxxxxxxxxxx";//获取openid$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";$result = https_request($url);$jsoninfo = json_decode($result, true);$openid = $jsoninfo["openid"];//从返回json结果中读出openid$callback=$_GET['callback'];  // echo $callback."({result:'".$openid."'})"; echo $openid; //把openid 送回前端function https_request($url,$data = null){    $curl = curl_init();    curl_setopt($curl, CURLOPT_URL, $url);    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);    if (!empty($data)){        curl_setopt($curl, CURLOPT_POST, 1);        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);    }    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);    $output = curl_exec($curl);    curl_close($curl);    return $output;}?>
Nach dem Login kopieren



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Arbeiten mit Flash -Sitzungsdaten in Laravel

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Einführung in die Instagram -API

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

12 Beste PHP -Chat -Skripte auf Codecanyon

Ankündigung von 2025 PHP Situation Survey Ankündigung von 2025 PHP Situation Survey Mar 03, 2025 pm 04:20 PM

Ankündigung von 2025 PHP Situation Survey

See all articles