`
アリス
  • 浏览: 7625 次
  • 性别: Icon_minigender_1
  • 来自: 福建
文章分类
社区版块
存档分类
最新评论

有趣的两个第三方应用,邮箱关联头像和URL缩短

阅读更多
[1]. 用户头像显示
地址: http://en.gravatar.com/
Gravatar会把邮箱和对应邮箱用户上传的图片进行关联.
如果你的应用使用了gravatar,访问你应用的用户有在gravatar上注册且上传了头像,你的应用就可以通过用户留下的邮箱地址来显示图片,你可以把它当成用户的头像.
使用Gravatar的话就可以除去要向客户传输图片的压力,当然这也需要用户有在Gravatar注册过账号..

/**
 * 类名: Gravatar.java<br />
 * 类描述:Gravatar邮箱关联图片,头像显示
 * 
 * @version: 1.0
 * @date: 2013-4-4 下午7:35:27
 * **/
public class Gravatar {
	private final static String BASE = "http://www.gravatar.com/avatar/";
	
	/**
	 * 方法描述:通过邮箱获取图片地址
	 * @param email 邮箱地址
	 * @param size 图片大小
	 * @return: 图片地址
	 * @version: 1.0
	 * @date: 2013-4-4 下午7:45:03
	 * **/
	public static String getImage(String email, Integer size) {
		return BASE + md5Hex(email) + "?s=" + size + "&d=mm";
	}
	
	/**
	 * 方法描述:通过邮箱批量获取图片地址
	 * @param emailList 多个邮箱地址
	 * @return: 图片地址集合
	 * @param size 图片大小
	 * @version: 1.0
	 * @date: 2013-4-4 下午7:42:39
	 * **/
	public static List<String> getImages(List<String> emailList, Integer size) {
		List<String> list = new ArrayList<String>();
		for (String email : emailList) {
			list.add(BASE + md5Hex(email) + "?s=" + size + "&d=mm");
		}
		return list;
	}
	
	
	
	//------------	以下为私有方法
	
	private static String hex(byte[] array) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < array.length; ++i) {
			sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(
					1, 3));
		}
		return sb.toString();
	}
	private static String md5Hex(String message) {
		String result = "";
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			result = hex(md.digest(message.getBytes("CP1252")));
		} catch (NoSuchAlgorithmException e) {
		} catch (UnsupportedEncodingException e) {
		}
		return result;
	}
}


[2]. URL缩短
地址: http://p.tl/api.php
缩短URL,将用户的URL关联到她域名下的一个地址.

/**
 * 类名: PixivURL.java<br />
 * 类描述:URL缩短
 * @version: 1.0
 * @date: 2013-4-5 下午10:27:46
 * **/
public class PixivURL extends P implements PStatus {
	/** API_KEY: API_KEY **/
	private static final String API_KEY = "1f726de5d07a80556e7f54baeffab04b30f348c0";


	/**
	 * 方法描述:url缩短
	 * @param url 原始地址
	 * @return: 缩短后的url
	 * @version: 1.0
	 * @date: 2013-4-5 下午10:29:15
	 * **/
	public static PixivURL getInstance(String url) {
		String requestUrl = "http://p.tl/api/api_simple.php?key=" + API_KEY + "&url=" + url;
		URL u;
		BufferedReader br;
		PixivURL p = null;
		String link;
		try {
			u = new URL(requestUrl);
			URLConnection conn = u.openConnection();
			InputStream is = conn.getInputStream();
			InputStreamReader isr = new InputStreamReader(is);
			br = new BufferedReader(isr);
			while(null != (link = br.readLine())){
	 			Gson gson = new Gson();
	 			p = gson.fromJson(link, PixivURL.class);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return p;
	}
	
	
	/**
	 * 方法描述:批量处理
	 * @param urls URL集合
	 * @return: 修改后的URL
	 * @version: 1.0
	 * @date: 2013-4-5 下午11:44:35
	 * **/
	public static List<PixivURL> getInstance(List<String> urls) {
		List<PixivURL> list = new ArrayList<PixivURL>();
		for (String url : urls) {
			list.add(PixivURL.getInstance(url));
		}
		return list;
	}
}

class P {
	/** status: 操作状态(成功返回PixivURL.REQUEST_SUCCESS) **/
	private String status;
	/** long_url: 原始的URL **/
	private String long_url;
	/** short_url: 缩短的URL **/
	private String short_url;
	/** counter: 使用了几次(1天能调用1000次) **/
	private String counter;
	
	/** @return status : 操作状态 **/
	public String getStatus() {
		return status;
	}
	/** @return long_url : 原始的URL **/
	public String getLongUrl() {
		return long_url;
	}
	/** @return short_url : 缩短的URL **/
	public String getShortUrl() {
		return short_url;
	}
	/** @return counter : 使用了几次(1天能调用1000次) **/
	public String getCounter() {
		return counter;
	}
}

interface PStatus {
//	empty API key	APIキーが入力されていません。
//	invalid API key	不正なAPIキーです。
	/** OK: URL成功缩短/URLの短縮が成功しました **/
	static String OK = "ok";
	/** EMPTY_LONG_URL: 未输入需要缩短的URL/短縮元のURLが入力されていません **/
	String EMPTY_LONG_URL = "empty long url";
	/** API_LIMIT: 调用次数超过上限(1天能调用1000次)/APIの利用回数が上限を越えています **/
	String API_LIMIT = "API limit";
	/** INVALID_LONG_URL: URL无法缩短 /短縮できないURLです**/
	String INVALID_LONG_URL = "invalid long url";
}



附件就是上面描述的两个应用,[2]会用到gson
下面是演示调用:

public class Test {

	public static void main(String[] args) throws Exception{
		pixivURL();
		gravatar();
	}
	
	private static void pixivURL() throws Exception {
		PixivURL p = PixivURL.getInstance("http://lshtzml-163-com.iteye.com/admin/blogs/1842602");
		
		if (PixivURL.OK.equals(p.getStatus())) {
			Desktop.getDesktop().browse(new URL(p.getShortUrl()).toURI());
		} else if (PixivURL.API_LIMIT.equals(p.getStatus())) {
			System.out.println("调用次数超过上限");
		} else if (PixivURL.EMPTY_LONG_URL.equals(p.getStatus())) {
			System.out.println("未输入需要缩短的URL");
		} else if (PixivURL.INVALID_LONG_URL.equals(p.getStatus())) {
			System.out.println("URL无法缩短");
		}
	}

	private static void gravatar() throws Exception {
		String url = Gravatar.getImage("mikoarisu@gmail.com", 200);
		Desktop.getDesktop().browse(new URL(url).toURI());
	}
}
分享到:
评论

相关推荐

    第三方登录

    3. **配置Info.plist**:为了确保应用能够正确请求权限,需要在Info.plist文件中添加必要的URL Scheme,以便应用能够处理从第三方应用返回的回调。 4. **编写代码逻辑**:使用SDK提供的API发起登录请求,通常这会...

    JavaWEB 第三方登录

    通过分析和运行这个Demo,你可以快速掌握第三方登录的实现方法,并将其应用于自己的项目。 总之,Java Web第三方登录是提高用户便利性和安全性的重要手段。通过学习和实践,开发者可以熟练地整合QQ、微信、微博等...

    第三方登录接口

    2. **配置应用信息**:在第三方平台的开发者后台,配置你的应用信息,包括应用名称、回调URL等,这些信息会在用户授权后用于验证和回调。 3. **引导用户授权**:在你的应用中,添加第三方登录按钮,点击后会跳转到...

    thinkphp第三方登录

    2. **第三方API接入**:首先,你需要在每个第三方平台的开放平台上注册应用,获取App ID(Client ID)和App Secret(Client Secret)。这些信息是与第三方平台通信的关键。 3. **ThinkPHP配置**:在ThinkPHP项目中...

    moss中使用第三方邮箱解决方案

    MOSS作为一个企业级的内容管理和协作平台,有时用户可能希望使用他们现有的或者更喜欢的第三方邮件服务,而不是依赖于内置的Microsoft Exchange Server。 描述中提到的“请大家多指教”,表明这是一个讨论性质的...

    安卓社会化分享第三方登录相关-第三方登录和获取登录后信息的案例源码.rar

    在安卓应用开发中,社会化分享和第三方登录是提高用户体验、增加用户粘性的关键特性。这个压缩包文件"安卓社会化分享第三方登录相关-第三方登录和获取登录后信息的案例源码.rar"提供了一些实现这些功能的源码示例,...

    如何在Windows 8的邮件应用来使用第三方提供商邮箱.docx

    ### 如何在Windows 8的邮件应用中使用第三方提供商邮箱 #### 一、引言 在Windows 8操作系统中,用户可以通过系统自带的邮件应用程序轻松地管理来自不同第三方电子邮件服务提供商(如126、163等)的邮件。这种方法...

    dotnet-Net平台下第三方登录组件

    这款组件通常会包含对OAuth 2.0协议的支持,因为这是大部分社交网络和电商平台用来授权第三方应用的标准协议。 描述中提到的"内置QQ,阿里巴巴,淘宝,京东,蘑菇街,有赞等平台"表明该组件已经预先集成了这些流行平台的...

    Android 第三方登录

    7. 换取用户信息:使用从回调中获取的授权码或访问令牌,向第三方平台发送请求,换取用户的基本信息,如用户名、头像、邮箱等。这一步通常需要服务器端配合,因为涉及到敏感的App Secret。 五、存储和验证用户信息 ...

    Android第三方登录

    开发者需要在第三方平台(如微信开放平台或Google开发者 Console)上注册应用,并获取相应的App ID和App Secret。 一、集成第三方登录服务 1. **微信登录**:首先,需要在微信开放平台注册并创建移动应用,获取...

    巧用Win8自带邮件功能来使用第三方邮箱.docx

    Windows 8操作系统中内置的邮件应用程序是一个简洁且实用的工具,它可以让你直接在系统内管理多个邮箱账号,包括非微软的第三方邮箱服务,如163邮箱。这个功能使得用户无需打开网页浏览器就能便捷地收发邮件,提高了...

    Github第三方(OAuth2.0)登录

    3. **交换令牌**:应用接收到授权码后,向GitHub发送一个包含授权码、客户端ID、客户端密钥(client secret)和回调URL的请求,以换取访问令牌(access token)和刷新令牌(refresh token)。 4. **获取用户信息**:...

    腾讯&新浪&网易第三方登陆API

    同样基于OAuth2.0协议,开发者首先注册应用获取App Key和App Secret,然后通过重定向URL引导用户授权,获取Access Token,进而获取用户UID、昵称、头像等信息。新浪还提供了分享、关注、评论等其他微博社交功能的API...

    第三方平台登录源码

    在第三方登录中,应用获取授权码,然后通过这个授权码获取访问令牌,从而能代表用户与服务器交互。 2. **OpenID Connect**:OpenID Connect是基于OAuth 2.0的认证层,它提供了一种标准的方式来验证用户的身份。应用...

    Exchange Server 和 Outlook客户相关的优秀第三方应用程序

    ### Exchange Server 和 Outlook客户相关的优秀第三方应用程序 #### 管理与操作类工具 ##### 1. AppAnalyzer for Exchange(Exchange应用分析器) - **概述**:AppAnalyzer for Exchange是一款全面监控Exchange...

    国内第三方支付平台比较分析.zip

    文档“国内第三方支付平台比较分析.doc”显然包含了对国内主要第三方支付平台的详细评估和比较。第三方支付平台在中国电子商务和日常交易中扮演着至关重要的角色,它们为商家和消费者提供了安全、便捷的支付解决方案...

Global site tag (gtag.js) - Google Analytics