Dribbble的OAuth2.0认证【Dribbble客户端】

从昨晚忙到今天凌晨4点,终于搞明白了Dribbble认证拿到了用于调用DribbbleAPI的Access Token, 并在界面中使用WebView获取用户授权后自动跳转。

整个过程非常简单,但是因为本人第一次调用Web API,遇到很多各种各样的问题,花了相当长的时间。


1.首先,在Dribbble的Developer网站上注册一个应用,获取到Client ID和Client Secret.


2.然后在代码中开启WebView加载Dribbble的authorize登录认证页面,URL必需的参数有两个,一个client_id,和一个scope。scope是要获取的权限,比如是只读权限,还是写入权限等等。

用户登陆后会显示授权界面。

这里要注意了,当用户点击授权后,网页会跳转到一个URL,就是在注册应用时填写的URL + code码。这个code码是我们需要的,稍后要用于获取Access Token。

现在的问题是,当用户点击授权后,页面会显示“页面无法显示”的信息,非常糟糕。要解决这个问题,就要获取到WebView页面加载完成的监听事件。

解决方法:自己写一个WebViewClient对象继承自WebViewClient,复写onPageFinished方法,该方法有一个URL参数,即完成加载的页面URL。因为我们知道该URL中有我们需要的“code”参数,就可以进行判断了。如果含有“code”字符串,则把code参数切出来传出去即可。


3.获取到Dribbble给我们返回的”code“参数后,就可以用这个参数来提交表单获取Access Token了。

获取Access Token的URL需要三个参数,除了上面提到的Client ID外,还有Client Secret和先前授权给我们的code码。

这里出现了第二个问题。一开始小生用HttpURLConnection类来POST表单,一切正常。然后为了精简代码,使用了Google的Volley网络框架造成了一个问题。

小生开启认证Activity时调用的是startActivityForResult()方法,然后在onActivityResult方法中接收Access Token,结果发现,onActivityResult被调用时,Volley还没有返回Access Token,造成无法接收Json数据进行解析。

这里要记录一下,自己在onActivityResult方法上栽跟头不是第一次了,发现该方法不被调用时要检查:

1.参数有三个,其中一个int类型的requestCode,一个int类型的resultCode和带数据的Intent。判断时判断的是另一个Activity传过来的resultCode,即创建Intent时传入的RESULT_OK,和当前RESULT_OK的值是否相等。要注意的是,RESULT_OK的值是一个int常量,-1.

2.检查intent中的数据是否为null。

当然Activity之间的数据传输不止这一种方法,小生决定拿到Access Token后直接存入数据库一劳永逸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值