微信绑定设备后,有时候用户需求的变化并不需要这个设备了,那么此时如何解绑设备呢,其实微信解绑设备有两种方式,一种方式就是在微信app本身内部解绑设备,另一种就是开发者调用微信解绑接口解除绑定。
第一种方式,微信app内部解绑
1,打开微信app,登录,然后切换到小人栏目,我们可以看到设置连接
2,点击设置连接,我们在切换的界面中可以看到设备按钮
3,点击设备按钮,我们可以看到自己的微信绑定了多少硬件设备
4,点击想要解绑的设备
在界面中,点击界面底部删除设备按钮,就能解绑设备啦。
第二种,调用微信公众平台解绑接口解绑设备
1)、咱们首先看看微信官方文档是如何说明关于解绑设备的。
针对不同类型的设备,可能会有不同的绑定/解绑策略,为了让第三方厂商灵活地根据自身产品定制绑定/解绑的策略,通过新的接口,微信把设备绑定/解绑处理的决定权交给第三方厂商。
目前绑定/解绑有2种体验:
1. 用户通过第三方H5直连第三方后台绑定/解绑设备:在第三方后台处理完成后,若绑定/解绑成功,调用API把绑定/解绑的结果推送给公众平台。
2. 第三方强制绑定/解绑:第三方调用API主要用于客服场景,帮助用户解决无法绑定/解绑的问题。
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/device/unbind?access_token=ACCESS_TOKEN
POST数据说明
{ "ticket": "TICKET", "device_id": "DEVICEID", "openid": " OPENID" }
返回结果
成功的Json返回结果:
{base_resp:{"errcode": 0,"errmsg":"ok"}}
失败的Json返回示例:
{base_resp:{"errcode": -1,"errmsg":"system error"}}
2)、编写java示例代码
1,获取access_token
//获取token V型知识库 www.vxzsk.com String appid="你公众号基本设置里的应用id";//应用ID String appSecret="你公众号基本设置里的应用密钥";//(应用密钥) String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+""; String backData=Test8.sendGet(url, "utf-8", 10000); JSONObject jsonObject = JSONObject.fromObject(backData); String access_token=jsonObject.getString("access_token");//调用接口凭证
2,获取ticket方法
//V型知识库www.vxzsk.com public final static String getticket_url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=";//接口凭据 public static String getJsapiTicket(String access_token){ String jsonData=Test8.sendGet(getticket_url+access_token+"&type=jsapi", "utf-8", 30000); JSONObject jsonObj = JSONObject.fromObject(jsonData); String errcode = jsonObj.getString("errcode"); String ticket = null; if(errcode.equals("0")){ ticket = jsonObj.getString("ticket"); } return ticket; }
3,sendGet方法
public static String sendGet(String url, String charset, int timeout) { String result = ""; try { URL u = new URL(url); try { URLConnection conn = u.openConnection(); conn.connect(); conn.setConnectTimeout(timeout); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line=""; while ((line = in.readLine()) != null) { result = result + line; } in.close(); } catch (IOException e) { return result; } } catch (MalformedURLException e) { return result; } return result; }
4,sendPost方法
//V型知识库 www.vxzsk.com public static String sendPost(String requrl,String param){ URL url; String sTotalString=""; try { url = new URL(requrl); URLConnection connection = url.openConnection(); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "text/xml"); // connection.setRequestProperty("Content-Length", body.getBytes().length+""); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); out.write(param); // 向页面传递数据。post的关键所在! out.flush(); out.close(); // 一旦发送成功,用以下方法就可以得到服务器的回应: String sCurrentLine; sCurrentLine = ""; sTotalString = ""; InputStream l_urlStream; l_urlStream = connection.getInputStream(); // 传说中的三层包装阿! BufferedReader l_reader = new BufferedReader(new InputStreamReader( l_urlStream)); while ((sCurrentLine = l_reader.readLine()) != null) { sTotalString += sCurrentLine + "\r\n"; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(sTotalString); return sTotalString; }
5,以上四步已经准备好了调用解绑接口的参数,我们还差两个参数device_id 和微信用户的openid,请用户自行替换,在这里不在累述,关于deviceid,请参考:https://www.vxzsk.com/87.html
解绑设备接口代码
//解绑设备 String ticket=Test8.getJsapiTicket(access_token);//解绑操作凭证 String device_id="";//设备id String openid="";//用户对应的openid String reurl ="https://api.weixin.qq.com/device/unbind?access_token="+access_token;//解绑接口地址 String params="{ \"ticket\": \""+ticket+"\", \"device_id\": \""+device_id+"\", \"openid\": \""+openid+"\"}"; String jsonData = Test8.sendPost(reurl, params); System.out.println("解绑返回的数据:"+jsonData);
6,完整java代码
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import net.sf.json.JSONObject; /** * *V型知识库 www.vxzsk.com */ public class Test8 { public final static String getticket_url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=";//接口凭据 public static String sendPost(String requrl,String param){ URL url; String sTotalString=""; try { url = new URL(requrl); URLConnection connection = url.openConnection(); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("Content-Type", "text/xml"); // connection.setRequestProperty("Content-Length", body.getBytes().length+""); connection.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); out.write(param); // 向页面传递数据。post的关键所在! out.flush(); out.close(); // 一旦发送成功,用以下方法就可以得到服务器的回应: String sCurrentLine; sCurrentLine = ""; sTotalString = ""; InputStream l_urlStream; l_urlStream = connection.getInputStream(); // 传说中的三层包装阿! BufferedReader l_reader = new BufferedReader(new InputStreamReader( l_urlStream)); while ((sCurrentLine = l_reader.readLine()) != null) { sTotalString += sCurrentLine + "\r\n"; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(sTotalString); return sTotalString; } /*** * 模拟get请求 * @param url * @param charset * @param timeout * @return */ public static String sendGet(String url, String charset, int timeout) { String result = ""; try { URL u = new URL(url); try { URLConnection conn = u.openConnection(); conn.connect(); conn.setConnectTimeout(timeout); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line=""; while ((line = in.readLine()) != null) { result = result + line; } in.close(); } catch (IOException e) { return result; } } catch (MalformedURLException e) { return result; } return result; } /*** * 获取调用微信jsapi接口凭据 * @param access_token * @return * linfanhe */ public static String getJsapiTicket(String access_token){ String jsonData=Test8.sendGet(getticket_url+access_token+"&type=jsapi", "utf-8", 30000); JSONObject jsonObj = JSONObject.fromObject(jsonData); String errcode = jsonObj.getString("errcode"); String ticket = null; if(errcode.equals("0")){ ticket = jsonObj.getString("ticket"); } return ticket; } /** * @param args */ public static void main(String[] args) { //获取token String appid="你公众号基本设置里的应用id";//应用ID String appSecret="你公众号基本设置里的应用密钥";//(应用密钥) String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+""; String backData=Test8.sendGet(url, "utf-8", 10000); JSONObject jsonObject = JSONObject.fromObject(backData); String access_token=jsonObject.getString("access_token");//调用接口凭证 //解绑设备 String ticket=Test8.getJsapiTicket(access_token);//解绑操作凭证 String device_id="";//设备id String openid="";//用户对应的openid String reurl ="https://api.weixin.qq.com/device/unbind?access_token="+access_token;//解绑接口地址 String params="{ \"ticket\": \""+ticket+"\", \"device_id\": \""+device_id+"\", \"openid\": \""+openid+"\"}"; String jsonData = Test8.sendPost(reurl, params); System.out.println("解绑返回的数据:"+jsonData); } }
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程