关闭

Android进阶2之oauth认证中UC无法跳转的问题

2654人阅读 评论(0) 收藏 举报

在开发新浪微博,网易微薄,搜狐微博等等android客户端的时候需要oauth认证,也就是要打开一个第三方提供的认证网页进行授权。

用户在授权之后会再跳转回应用完完成授权。在请求用户授权的时候会提供一个callback地址,用户完成授权操作后会跳转回这个地方一般是某个Activity。

但由于某些原因第三方浏览器例如UC浏览器无法完成跳转,系统自带浏览器却可以。

本博文就给出一个解决方案来解决这个问题。

Intent i=new Intent();
 
i.setAction(Intent.ACTION_VIEW,Uri.parse("http://veikr.com"));
 
startActivity(i);
来打开某个网址。如果你的手机上没有第三方的浏览器例如UC等你可以正常使用,但是很不幸的是一般手机用户都会安装UC浏览器。

第三方浏览是无法支持自定义schema的(比如myapp://AuthActivity)。

 <activity
            android:name=".AuthActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="AuthActivity"
                    android:scheme="myapp" />
            </intent-filter>
        </activity>
 <data
                    android:host="AuthActivity"
                    android:scheme="myapp" />

我们既不想卸载掉我们的UC,又想完成认证怎么办呢?

看看以下的方法:

Intent intent = new Intent();
			ComponentName name = new ComponentName("com.android.browser", "com.android.browser.BrowserActivity");
			intent.setComponent(name);
			intent.setData(Uri.parse(authUrl));
			intent.setAction(Intent.ACTION_VIEW);
			activity.startActivity(intent);

anthUrl是Url网址。

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



1
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2668784次
    • 积分:28971
    • 等级:
    • 排名:第185名
    • 原创:495篇
    • 转载:224篇
    • 译文:0篇
    • 评论:572条
    博客专栏
    最新评论