android新浪微博客户端oauth认证中UC无法跳转的问题

android新浪微博客户端oauth认证中UC无法跳转的问题

2011年6月14日 admin 发表评论 阅读评论

在开发新浪微博android客户端的时候需要oauth认证,也就是说要打开一个新浪的网页,用户在授权之后会再跳转回应用完完成授权。在请求用户授权的时候会提供一个callback地址,用户完成授权操作后会跳转回这个地方。但由于某些原因,UC并无法完成跳转,而系统自带浏览器却没有这个问题。本文就给出2个解决方案来解决这个问题。

 

一、在应用中内嵌入一个webView完成授权。

方法很简单,使用webView的loadurl方法打开授权网址就可以了。但是授权完成后需要获取到网页中显示的pin,具体方法请参考昨天写的文章 android中如何获得webView中的内容 。在这里就不再赘述了。

但由于这种方法用户无法看到浏览器地址栏,而是在你的应用中输入了用户名和密码,所以用户会觉得不放心。那可以试试下面的方法。

二、直接打开系统自带浏览器完成授权。

我们一般使用

1
2
3
4
5
Intent i= new Intent();
 
i.setAction(Intent.ACTION_VIEW,Uri.parse( "http://veikr.com" ));
 
startActivity(i);

来打开某个网址,但用户有可能选择使用第三方浏览器(如UC)来打开,不过第三方浏览是无法支持自定义schema的(比如veikr://OauthActivity)。

只需要这样,就可以直接打开系统自带浏览器。

1
2
3
4
5
6
7
8
9
10
Intent intent = new Intent();
 
ComponentName name = new ComponentName( "com.android.browser" , "com.android.browser.BrowserActivity" );
 
intent.setComponent(name);
 
intent.setData(Uri.parse( "http://veikr.com/wap/" ));
 
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);

附:这里提一下怎么使浏览器打开类似veikr://OauthActivity这样的地址。

写一个activity,然后部署的时候

1
2
3
4
5
6
7
< activity android:name = "WebViewActivity" >
 
      < intent-filter >
           < category android:name = "android.intent.category.BROWSABLE" ></ category >
           < data android:scheme = "veikr" android:host = "OauthActivity" ></ data >
      </ intent-filter >
</ activity >

你需要把”veikr://OauthActivity”作为callback传递给新浪的oauth认证地址,在完成认证后会返回这个地址,然后你的应用程序的这个activity就可以接管过来了。
在oncreate中使用getIntent().getData()就可以得到uri,pin就在uri中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值