1
txlty 2013-12-28 23:17:04 +08:00 1
oauth2.0很简单了。
请求平台authorize url,带上appid/appkey,callback url,回调地址。用户点击授权之后,跳转到回调地址(此处可加state验证防CSRF攻击)。给你返回的参数里有个code 用上面取得的code,请求平台的token url,获得access_token。 以后就用这个access_token,调用平台的api。 |
2
txlty 2013-12-28 23:27:08 +08:00 1
又看了一边楼主问题。真心没看懂。
你是康盛漫游app开发者? |
3
kmvan OP @txlty 感谢回复。but我还是有点混乱>_+
问题在这里,用户的站A,他只有akey、skey 和 callback url,用sdk算出授权页面地址后,点击授权,然后跳转是跳转到我服务器的页面啊,那站A怎么可以获取到跳转后的信息呢? |
7
gracece 2013-12-29 00:06:47 +08:00 1
@kmvan 好像有点明白你的意思了,类似于wordpress上能装多说,然后授权多说,在wordpress上发表文章时能选择同步到微博。
|
9
master 2013-12-29 00:22:21 +08:00 1
这个你需要多和A站约定一个协议。
当然做法很多,下面给出一种参考就是: 不是通过A战直接点到你的授权连接,而是A站给出一个连到B站的连接由B站的连接去调用授权页面(这样B站可以用事先约定好的方式知道是谁要通过自己来授权,然后当B站完成授权之后,再通过和A站约定好的方式告诉A站来完成最后的授权过程。 |
11
txlty 2013-12-29 02:22:34 +08:00 1
这就分两种情况了。你在A站有下发服务端代码给他们执行的权限?还是只有执行JS的权限?
两种情况,你都需要用户(A站)在页面里载入一个你网站(B站)域下的JS文件。 用户完成授权,返回到B站是在窗口里。可以执行关闭窗口操作。 父页面还是A站,在窗口关闭时,通过JS请求B站数据,以确认是否登录成功。 如果有服务端代码权限,那么: 授权成功后,将获得的access_token写入A站域下的cookie。cookie过期时间等于access_token过期时间。然后A站就可以用这个access_token调用API发微博了。(tx微博不行,因为tx调用API还需要appid) 如果像社会化评论框那样,只有JS执行权限。那么: 授权成功后,将以后需要的cookie写入B站域下。 发微博时,在A站通过JS向B站发出请求。所有与平台的交互,都由B站完成。A站通过JS与B站通信。 也就是说,A站本身与平台无关。 B站用正常oauth2.0调用微博平台API,登录、发微博,同时作为一个平台,接收A站请求。 跨域问题,通过动态载入JS的方式解决。 |
12
dagger 2013-12-29 10:16:29 +08:00 1
如果只是要完成跳转,不考虑其它授权和安全的问题,为什么不直接把A站的url作为参数塞到在oauth请求里,这样的话callback回B站的时候B站只要提取这个参数然后跳转回A站不就可以了吗
|
13
rekey 2013-12-29 22:30:57 +08:00 1
B站搞完了以后通知A站来取...
|
14
kmvan OP 感谢楼上各路大侠回复。我参考了大家的意见,授权终于能成功work起来了。
原来有一个“安全域名”设置,在那个域名下的任何二级域名和页面都能成为授权路径,这样的话,就能通过uri参数作为回调,虽然看起来不是很安全。 谢谢大家解答~ |
15
julyclyde 2013-12-30 23:47:38 +08:00 1
总的来说这个设计有问题
你其实做的是嵌入别人网站的widget吧? |
16
kmvan OP @julyclyde 对,现在已经应用已经通过审核了。应用地址是 http://inn-studio.com/sinapicv2 屌图床
|