假设你的网站有这样一种功能:如果用户同意,你的网站可以代表他去拿他在Facebook上的非公开照片; 然后在线下打印,把照片寄给你。
简单的解决办法是用户把他的facebook用户名/密码提交给你的网站,然后你的网站再用这个用户名/密码去调Facebook的web service.
问题是:
1. 用户不愿意把他在Facebook的用户名和密码给你的网站
2. 即使他愿意给你,他也会担心你的网站在拿到照片之后,又去进行“获取聊天记录”之类的未授权操作
3. 用户现在允许你现在去拿照片,但不代表允许你明天也可以拿
OAuth就是用来解决这种典型问题
:“Allowing one party(你的网站) to access someone else’s resources(用户在Facebook的照片) on their behalf(代表用户)”
1. 用户不用提供用户名/密码给你的网站,相反他的浏览器会跳转到facebook,他在facebook端输入用户名/密码,然后再跳转回来。回来时会在URL里加上一个token
2. 你的网站可以根据这个token去facebook拿照片。这个token将专用于“拿照片”。如果你想趁机窃取更多的个人资料,facebook会拒绝
3. 这个token也有时限,超过一段时间即失效。差不多你只能拿一次照片。