ebay API 應用之獲取user token和user ID

          usertoken有兩種,一種是開發者的usertoken,一種是用戶的usertoken,開發測試時可以用自己的token,寫進程序裏面,避免每次都要花時間get一次,獲取開發者的token很簡單,在https://go.developer.ebay.com/註冊開發者帳號,ps:開發者帳號與ebay帳號不一樣的。。


        下面主要介紹怎麼在程序中,通過ebay api獲得用戶的token,這主要通過FetchTokenCall這個api獲取。

        這個api需要的額外參數有五個,appID,certID,devID,sessionID和serverURL,前三個需要註冊開發者帳號獲得,登錄https://developer.ebay.com後,點擊My Account可以看到,有sandbox和production兩種,在測試階段選擇sandbox的id,應用發佈版選擇production類型。sesionID通過另外一個API GetSessionID獲取,這個API也需要上述三個ID。獲取token的流程就是,先獲取用戶登錄的url,然後打開瀏覽器,讓用戶輸入密碼驗證登錄,然後在用戶驗證通過後,使用FetchTokenCall獲取user token。說多了羅嗦,上代碼:

1,獲取驗證的url:

public static String getAuthenticateUrl() throws Exception {
	ApiContext localContext = new ApiContext();
	ApiAccount apiAccount = new ApiAccount();
	apiAccount.setApplication(appID);
	apiAccount.setCertificate(certID);
	apiAccount.setDeveloper(devID);
	localContext.getApiCredential().setApiAccount(apiAccount);
	localContext.setApiServerUrl("https://api.sandbox.ebay.com/wsapi");
	GetSessionIDCall apiCall = new GetSessionIDCall(localContext);
	apiCall.setRuName(ruName);
	GetContext.sessionID = apiCall.getSessionID();
	return "https://signin.sandbox.ebay.com/ws/eBayISAPI.dll?SignIn&" + "RuName=" + ruName
			+ "&SessID=" + GetContext.sessionID;
}
        忘了說了,ruName在My Account>Application Settings>customize the ebay user consent form中獲取。


2,打開瀏覽器,用戶驗證登錄

        可以粘貼上述地址到瀏覽器上,也可以在程序中打開系統的瀏覽器,減少用戶的麻煩,在程序中打開系統瀏覽器,方法如下:

public static boolean openBrowser(String url) {
	if (url == null) return false;
	String[] unixBrowser = new String[] { "google-chrome", "firefox" };
	boolean success = false;
	if (System.getProperty("os.name").toLowerCase().startsWith("win")) {
		try {
			Runtime.getRuntime().exec(
					new String[] { "rundll32.exe", "url.dll,FileProtocolHandler", url });
			success = true;
		} catch (Exception e) {
		}
	} else {
		for (int i = 0; i < unixBrowser.length; ++i)
			try {
				Runtime.getRuntime().exec(new String[] { unixBrowser[0], url });
				success = true;
				break;
			} catch (Exception e) {
			}
	}
	return success;
}






3,使用FetchTokenCall獲取usertoken,使用ConfirmIdentityCall獲取userID,

public static boolean getUserToken() {
	if (sessionID == null) return false;
	ApiContext localContext = new ApiContext();
	ApiAccount apiAccount = new ApiAccount();
	apiAccount.setApplication(appID);
	apiAccount.setCertificate(certID);
	apiAccount.setDeveloper(devID);
	localContext.getApiCredential().setApiAccount(apiAccount);
	localContext.setApiServerUrl("https://api.sandbox.ebay.com/wsapi");

	ConfirmIdentityCall apiCall1 = new ConfirmIdentityCall(localContext);
	apiCall1.setSessionID(sessionID);
	try {
		apiCall1.confirmIdentity();
		userID = apiCall1.getReturnedUserID();
	} catch (Exception e) {
		e.printStackTrace();
	}

	FetchTokenCall apiCall = new FetchTokenCall(localContext);
	apiCall.setSessionID(sessionID);
	try {
		apiCall.fetchToken();
	} catch (Exception e) {
		e.printStackTrace();
		return false;
	}
	return true;
}


大功告成!



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章