1. 程式人生 > >微信獲取AccessToken並本地儲存

微信獲取AccessToken並本地儲存

不敢標原創,感謝柳峰老師和另一位dalao(http://my.csdn.net/wgyscsf)
public class WxAccessToken {
	private static final long MAX_TIME = 7200 * 1000;// 微信允許最長Access_token有效時間(ms)

	/**
	 * 獲取Access_token 儲存並且只儲存2小時Access_token。如果超過兩個小時重新獲取;如果沒有超過兩個小時,直接獲取
	 * 思路:將獲取到的Access_token和當前時間儲存到file裡,
	 * 取出時判斷當前時間和儲存裡面的記錄的時間的時間差,如果大於MAX_TIME,重新獲取,並且將獲取到的儲存到file替換原來的內容
	 * ,如果小於MAX_TIME,直接獲取。
	 * 
	 * @throws IOException
	 */
	public static String getSavedAccess_token() throws IOException {
		Gson gson = new Gson();
		String mAccess_token = null;// 需要獲取的Access_token;
		File file = new File("temp_access_token.temp");// Access_token儲存的位置
		// 如果檔案不存在,建立
		if (!file.exists())
			file.createNewFile();
		// 如果檔案大小等於0,說明第一次使用,存入Access_token
		if (file.length() == 0) {
			mAccess_token = getAccessToken();
			FileOutputStream fos = new FileOutputStream(file, false);// 不允許追加
			Access_token at = new Access_token();
			at.setAccess_token(mAccess_token);
			at.setExpires_in(System.currentTimeMillis() + "");
			String json = gson.toJson(at);
			fos.write((json).getBytes());
			fos.close();
		} else {
			// 讀取檔案內容
			FileInputStream fis = new FileInputStream(file);
			byte[] b = new byte[2048];
			int len = fis.read(b);
			String mJsonAccess_token = new String(b, 0, len);// 讀取到的檔案內容
			Access_token access_token = gson.fromJson(mJsonAccess_token, new Access_token().getClass());
			if (access_token.getExpires_in() != null) {
				long saveTime = Long.parseLong(access_token.getExpires_in());
				long nowTime = System.currentTimeMillis();
				long remianTime = nowTime - saveTime;
				//System.out.println(TAG + "時間差:" + remianTime);
				if (remianTime < MAX_TIME) {
					Access_token at = gson.fromJson(mJsonAccess_token, new Access_token().getClass());
					mAccess_token = at.getAccess_token();
				} else {
					mAccess_token = getAccessToken();
					FileOutputStream fos = new FileOutputStream(file, false);// 不允許追加
					Access_token at = new Access_token();
					at.setAccess_token(mAccess_token);
					at.setExpires_in(System.currentTimeMillis() + "");
					String json = gson.toJson(at);
					fos.write((json).getBytes());
					fos.close();
				}

			}
		}
		//System.out.println("獲取到的Access_token是:" + mAccess_token);
		return mAccess_token;
		
	}

	public static String getAccessToken() {
		String urlString = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
				+ Constant.APPID + "&secret=" + Constant.SERCRET;
		String reslut = null;
		try {
			URL reqURL = new URL(urlString);
			HttpsURLConnection httpsConn = (HttpsURLConnection) reqURL.openConnection();
			InputStreamReader isr = new InputStreamReader(httpsConn.getInputStream());
			char[] chars = new char[1024];
			reslut = "";
			int len;
			while ((len = isr.read(chars)) != -1) {
				reslut += new String(chars, 0, len);
			}
			isr.close();
		} catch (IOException e) {

			e.printStackTrace();
		}
		Gson gson = new Gson();
		Access_token access_token = gson.fromJson(reslut, new Access_token().getClass());
		if (access_token.getAccess_token() != null) {
			return access_token.getAccess_token();
		} else {
			return null;
		}
	}
}

相關推薦

獲取AccessToken本地儲存

不敢標原創,感謝柳峰老師和另一位dalao(http://my.csdn.net/wgyscsf) public class WxAccessToken { private static final long MAX_TIME = 7200 * 1000;// 微信允許

獲取AccessToken以及選單的操作

過了兩三天開始寫微信的第二個博文,最近有點瘋狂,將近兩天的時間寫了快20篇博文,以後要將缺失的博文補回來。好了,開始說微信獲取AccessToken以及選單的操作。 獲取AccessToken的原因很簡單,因為呼叫微信的介面都需要AccessToken,每天獲取accessToken的次數是

獲取access_token存入配置檔案 的類和程式碼

剛寫的微信獲取access_token的程式碼,發上來做個記錄,也希望大家共同探討. <?php /** * 用於更新微信access_token * Class WechatAccessToken */ namespace Wechat; class WechatAccessTo

IOS 獲取accesstoken 40029

微信授權根據code獲取accesstoken時報40029 不合法的code 在瀏覽器中是可以獲取到token的  因為在客戶端 @"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret

小程式:最新登入授權獲取openid等資訊

簡介 為優化使用者體驗,使用 wx.getUserInfo 介面直接彈出授權框的開發方式將逐步不再支援。從2018年4月30日開始,小程式與小遊戲的體驗版、開發版呼叫 wx.getUserInfo 介面,將無法彈出授權詢問框,預設呼叫失敗。 小程式使用 button 元件,並

公眾號開發__網頁授權獲取使用者基本資訊(是否關注公眾號、頭像、暱稱等)

        本人最近要做微信公眾號網頁開發的專案,其中有個需求是判斷使用者是否關注公眾號,由於之前沒有接觸過微信授權的東西,所以提前開始做調研。在度娘上看了好多部落格、百度知道、百度經驗、知乎問答等,還仔細閱讀了微信公眾平臺開發文件,大致瞭解到:        微信網頁授

egret小遊戲在本地使用者檔案目錄下建立檔案讀取內容

Platform.ts新增 declare interface Platform { getUserInfo(): Promise<any>; login(): Promise<any> getFileData(fi

python之獲取好友列表保存文檔中

clas 排序 span 獲取 pan 登錄 int ppr open 代碼如下 from wxpy import * from pprint import pprint #登錄微信 bot = Bot() my_friend = bot.friend

用python wxpy管理公眾號,利用獲取自己的開源資料。

之前瞭解到itchat 乃至於 wxpy時 是利用tuling聊天機器人的介面。呼叫介面並儲存雙方的問答結果可以作為自己的問答詞庫的一個數據庫累計。這些資料可以用於自己訓練。 而最近希望獲取一些語音資源,用於卷積神經網路的訓練。。     首先wxpy是itchat的升級版,通

小程序 從本地相冊選擇圖片或使用相機拍照chooseImage()和預覽圖片previewImage()

pfile temp image 相冊選擇 bubuko tar gpo ndt res 要實現的效果如圖所示 wxml: <view class=‘suggest_img‘>請提供相關問題的截圖或照片</view> <view c

獲取wx.config 參數 基類

Coding ssa format style seconds tool pri temp ace using System; using System.Collections.Generic; using System.Linq; using System.We

python爬搜狗獲取指定公眾號的文章

lac bubuko 驗證 user pre info 分享 ima sogo 前言: 之前收藏了一個叫微信公眾號的文章爬取,裏面用到的模塊不錯。然而 偏偏報錯= =。果斷自己寫了一個 正文: 第一步爬取搜狗微信搜到的公眾號: http://weixin.sogo

獲取用戶基本息,頭像是一張“暫時無法查看”的圖?

有效 style 判斷圖片 查看 而且 。。 獲取用戶基本信息 原因 url 是這個 http://wx.qlogo.cn/mmopen/UAqwJ95HSLycmQktIqAYuexoytJ3kJzknQ4icJkNpfUvxfqoNRDY2esKQj3YvxXuQacs

開發公眾號本地除錯

使用vps的ssh埠轉發功能,將請求轉發到本地。 1.  設定vps 的ngxin server { listen 80; server_name wechat.heartwith.me; location / { prox

獲取使用者資訊

網頁授權access_token和普通access_token的區別 獲取方式: 普通token的獲取 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=

關於小程式圖片本地顯示真機測試上不能顯示的問題

廢話不多說直接入正題 圖片不能過大 圖片命名不能含有中文 圖片命名也不能有空格 圖片大小寫要區分 以介面或者連結形式的圖片開頭不能是大寫的HTTP結尾也不能是.PNG 上面就是我在今天碰到問題時在網上搜到的普遍解決方法 但如果問題還沒解決,怎麼辦呢?

獲取openID和使用者資訊

網頁獲取使用者資訊文件說明 進入微信公眾平臺,介面許可權—>網頁服務—>網頁授權—->修改—>網頁授權域名設定,填寫你想要的域名,並按照說明下載txt檔案放到對應的域名下,接下來開始碼程式碼 public static String codeurl = "h

Android逆向之旅---靜態方式破解獲取聊天記錄和通訊錄資訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

搭建小程式的本地測試伺服器 json-server

1.首先需要在windows環境下安裝node.js    選擇 Windows Installer 下載對應的系統版本就行,然後一路next,這種方式安裝好以後會把環境變數也配置好了,直接在命令列下輸入 node --version //出現對應的版本號

簡單的實現獲取openid

微信公眾平臺獲取openid在公眾號的開發中有很多用途,前段時間為實現使用者使用公眾號在登入一次以後可以免密登陸而使用了openid。開發過程中遇到了一些問題,在這裡向需要且還沒有獲取到openid的米娜桑分享一下簡單的流程及部分程式碼,和一些問題的解決方式,給初次接觸微信openid的朋友們一個參考。目的只