要实现微信版页面的授权登录必须:
1 有服务号 2 页面在微信中打开
要实现网页版微信扫码登录必须: 1 有开发平台账号 2 网站服务已经被绑定到开发平台账号
有些ajax请求是跨域请求会报错,可以采用本服务器服务器语言如php用 curl_init方法 调用远程微信信息。
本服务器js调用本服务器php页面得到返回结果 相关代码
public 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;
}
$result = https_request($url);
$jsoninfo = json_decode($result, true);
openid是针对appid和微信号的唯一,同一个微信号 针对不同的appid ,openid是不同的。但是同一个微信号针对一个特定的appid的openid是永恒不变的。
现在很多项目都采用的前后端分离的部署策略, 那么前端代码通常要调用不同域的后端api。 为了确保后端代码提供的api仅对部分域名开放 可以采用以下代码保护你的api
header("Content-type: application/json; charset=UTF-8");
$http_origin = $_SERVER['HTTP_ORIGIN'];
if ($http_origin == "http://m.xxx.com" || $http_origin == "http://pc.xxx.com" ){
header("Access-Control-Allow-Origin: $http_origin");
}
if(!in_array($http_origin,array('http://m.xxx.com','http://pc.xxx.com'))){
die('去死');
}
微信的授权一层一层拿到,那么其实可以在ajax里套ajax,我为了拿到用户的信息并且在数据库里更新数据,套了三层ajax,发现速度还可以,如果每获得一个结果重定向页面再处理数据速度反而会慢。