Java基础知识强化之网络编程笔记21:Android网络通信之 Android常用OAuth登录(获取令牌信息)
2015-10-18 21:25
1031 查看
1. 首先我们去下载开发相关SDK(Android):
下载百度使用OAuth的SDK(Android),如下:
下载链接为:http://developer.baidu.com/wiki/index.php?title=docs/oauth/showcase
2. 解压SDK压缩包,如下:
打开这里的oauth2-api-android-sdk说明文档,这里有使用SDK的详细步骤,下面通过案例演示。
3. 案例演示:
(1)申请应用AppKey
AppKey在百度开放平台申请,用于标识您的应用程序。地址为http://developer.baidu.com
(2)修改redirect url地址(回调地址必须填写为bdconnect://success,不然会报错)
在应用管理-》OAuth安全设置-》授权回调页 中填写以下地址:
如下图:
(3)新建一个Android工程,如下:
(4)导入JAR包到上面创建的Android项目之中,如下:
复制baidu-android-openapi-sdk.jar到[b]上面创建的Android项目libs文件夹下,如下:[/b]
[b]
[/b]
然后添加jar包构建路径:
还有一种方式添加jar包构建路径,如下:
• 右键点击你的工程,然后选择"Properties";
• 在工程属性对话框左边选择"Java Build Path";
• 在工程属性对话框主窗口选择"Libraries";
• 点击“Add JARs”,添加.jar。
[b]这个时候工程如下图:
[/b]
(5)编写activity_main.xml,如下:
布局效果,如下:
(6)MainActivity.java,如下:
(7)AndroidMainfest.xml
(8)布署到模拟器上,如下:
下载百度使用OAuth的SDK(Android),如下:
下载链接为:http://developer.baidu.com/wiki/index.php?title=docs/oauth/showcase
2. 解压SDK压缩包,如下:
打开这里的oauth2-api-android-sdk说明文档,这里有使用SDK的详细步骤,下面通过案例演示。
3. 案例演示:
(1)申请应用AppKey
AppKey在百度开放平台申请,用于标识您的应用程序。地址为http://developer.baidu.com
(2)修改redirect url地址(回调地址必须填写为bdconnect://success,不然会报错)
在应用管理-》OAuth安全设置-》授权回调页 中填写以下地址:
bdconnect://success
如下图:
(3)新建一个Android工程,如下:
(4)导入JAR包到上面创建的Android项目之中,如下:
复制baidu-android-openapi-sdk.jar到[b]上面创建的Android项目libs文件夹下,如下:[/b]
[b]
[/b]
然后添加jar包构建路径:
还有一种方式添加jar包构建路径,如下:
• 右键点击你的工程,然后选择"Properties";
• 在工程属性对话框左边选择"Java Build Path";
• 在工程属性对话框主窗口选择"Libraries";
• 点击“Add JARs”,添加.jar。
[b]这个时候工程如下图:
[/b]
(5)编写activity_main.xml,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.himi.oauthdemo.MainActivity" > <Button android:id="@+id/btn_oauth" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Baidu OAuth" android:onClick="onClickOAuth"/> <TextView android:id="@+id/tv_access_token" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </LinearLayout>
布局效果,如下:
(6)MainActivity.java,如下:
package com.himi.oauthdemo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import com.baidu.api.Baidu; import com.baidu.api.BaiduDialog.BaiduDialogListener; import com.baidu.api.BaiduDialogError; import com.baidu.api.BaiduException; public class MainActivity extends Activity { private TextView mTvAccessToken = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTvAccessToken = (TextView) findViewById(R.id.tv_access_token); } public void onClickOAuth(View v) { //调用百度授权 final Baidu baidu = new Baidu("fnREQtw4FLhdL932ESpj68Gw", this); /** * authorize(activity, isForceLogin, isConfirmLogin, listener); * 参数activity:Activity * 参数isForceLogin:是否强制登录 * 参数isConfirmLogin: 是否让用户每次确认登录 * 参数listener:监听接口 */ baidu.authorize(this, true, true, new BaiduDialogListener() { /** * 百度登录错误的时候,回调此方法 */ public void onError(BaiduDialogError arg0) { refreshUI("error"); } /** * 百度登录完成成功的时候,回调此方法 */ public void onComplete(Bundle arg0) { refreshUI(baidu.getAccessToken()); } /** * 用户取消,回调此方法 */ public void onCancel() { // TODO 自动生成的方法存根 refreshUI("cancel"); } /** * 异常信息处理,回调此方法 */ public void onBaiduException(BaiduException arg0) { refreshUI("Exception"); } }); } private void refreshUI(final String msg) { runOnUiThread(new Runnable() { public void run() { mTvAccessToken.setText(msg); } }); } }
(7)AndroidMainfest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.himi.oauthdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
(8)布署到模拟器上,如下:
相关文章推荐
- 网络图片的获取以及二级缓存策略(Volley框架+内存LruCache+磁盘DiskLruCache)
- 由于权限不足而无法读取配置文件出现的HTTP 500.19解决办法
- Java编写网络爬虫
- Http请求中Content-Type讲解以及在Spring MVC中的应用
- Unity3d之Http通讯GET方法和POST方法
- Unity3d之Http通讯GET方法和POST方法
- 软考(二):网络中的那些事儿
- tcpdump常用命令
- http://www.jb51.net/article/32651.htm
- 从头开始实现神经网络:入门
- HTTP请求的两种方式get和post的区别
- Java基础知识强化之网络编程笔记20:Android网络通信之 Android常用OAuth登录和分享
- error: The requested URL returned error: 403 Forbidden while accessing https://github.com/blah/blah
- 【cisco实验】练习 2.3.8: 配置基本交换机管理
- poj_2396 有上下界的网络流
- HttpClient 版本变化 转载
- TCP/IP 三次握手 四次断开
- Java基础知识强化之网络编程笔记19:Android网络通信之 HttpClient和传统Post、Get方式的区别
- 深入理解VMware虚拟网络(桥接 NAT HOST-Only)
- Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)