@Override public void verify(final UChannel channel, String extension, final ISDKVerifyListener callback) { try { JSONObject json = JSONObject.fromObject(extension); final String uid = json.getString("uid"); final String username = json.getString("nickname"); Map<String, String> params = new HashMap<String, String>(); params.put("appid", channel.getCpAppID()); params.put("uid", uid); StringBuilder sb = new StringBuilder(); sb.append(channel.getCpAppID()).append(channel.getCpAppKey()).append(uid); String sign = EncryptUtils.sha1(sb.toString()); params.put("sign", sign.toUpperCase()); String url = channel.getChannelAuthUrl(); UHttpAgent.getInstance() .get( url, params, new UHttpFutureCallback() { @Override public void completed(String result) { try { Log.e("The auth result is " + result); if ("SUCCESS".equals(result)) { callback.onSuccess(new SDKVerifyResult(true, uid, username, "")); return; } } catch (Exception e) { e.printStackTrace(); } callback.onFailed( channel.getMaster().getSdkName() + " verify failed. the post result is " + result); } @Override public void failed(String e) { callback.onFailed(channel.getMaster().getSdkName() + " verify failed. " + e); } }); } catch (Exception e) { e.printStackTrace(); callback.onFailed( channel.getMaster().getSdkName() + " verify execute failed. the exception is " + e.getMessage()); } }
@Action("getToken") public void getLoginToken() { Log.d("getToken..."); try { final UGame game = gameManager.queryGame(this.appID); if (game == null) { renderState(StateCode.CODE_GAME_NONE, null); return; } final UChannel channel = channelManager.queryChannel(this.channelID); if (channel == null) { renderState(StateCode.CODE_CHANNEL_NONE, null); return; } if (channel.getAppID() != this.appID) { renderState(StateCode.CODE_CHANNEL_NOT_MATCH, null); return; } UChannelMaster master = channel.getMaster(); if (master == null) { renderState(StateCode.CODE_CHANNEL_NONE, null); return; } StringBuilder sb = new StringBuilder(); sb.append("appID=") .append(this.appID) .append("channelID=") .append(this.channelID) .append("extension=") .append(this.extension) .append(game.getAppkey()); if (!userManager.isSignOK(sb.toString(), sign)) { Log.e("the sign is invalid. sign:" + sign); renderState(StateCode.CODE_SIGN_ERROR, null); return; } ISDKScript verifier = SDKCacheManager.getInstance().getSDKScript(channel); if (verifier == null) { Log.e("the ISDKScript is not found . channelID:" + channelID); renderState(StateCode.CODE_VERIFY_FAILED, null); return; } Log.d("The auth url is " + channel.getChannelAuthUrl()); Log.d("channel is " + channel.getChannelID() + ";extension is " + extension); verifier.verify( channel, extension, new ISDKVerifyListener() { @Override public void onSuccess(SDKVerifyResult sdkResult) { try { Log.d("user verify success. result:" + sdkResult.getUserID()); if (sdkResult.isSuccess() && !StringUtils.isEmpty(sdkResult.getUserID())) { UUser user = userManager.getUserByCpID( channel.getAppID(), channel.getChannelID(), sdkResult.getUserID()); if (user == null) { user = userManager.generateUser(channel, sdkResult); } else { user.setChannelUserName( sdkResult.getUserName() == null ? "" : sdkResult.getUserName()); user.setChannelUserNick( sdkResult.getNickName() == null ? "" : sdkResult.getNickName()); user.setLastLoginTime(new Date().getTime() + ""); } user.setToken(UGenerator.generateToken(user, game.getAppSecret())); userManager.saveUser(user); JSONObject data = new JSONObject(); data.put("userID", user.getId()); data.put("sdkUserID", user.getChannelUserID()); data.put("username", user.getName()); data.put("sdkUserName", user.getChannelUserName()); data.put("token", user.getToken()); data.put("extension", sdkResult.getExtension()); data.put("timestamp", user.getLastLoginTime()); renderState(StateCode.CODE_SUCCESS, data); } else { renderState(StateCode.CODE_AUTH_FAILED, null); } } catch (Exception e) { renderState(StateCode.CODE_AUTH_FAILED, null); e.printStackTrace(); } } @Override public void onFailed(String errorMsg) { Log.e("The user verify failed. errorMsg:" + errorMsg); renderState(StateCode.CODE_AUTH_FAILED, null); } }); } catch (Exception e) { Log.e(e.getMessage()); renderState(StateCode.CODE_AUTH_FAILED, null); } }