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安全设置-》授权回调页 中填写以下地址:
bdconnect://success
如下图:
(3)新建一个Android工程,如下:
(4)导入JAR包到上面创建的Android项目之中,如下:
复制baidu-android-openapi-sdk.jar到上面创建的Android项目libs文件夹下,如下:
然后添加jar包构建路径:
还有一种方式添加jar包构建路径,如下:
• 右键点击你的工程,然后选择"Properties";
• 在工程属性对话框左边选择"Java Build Path";
• 在工程属性对话框主窗口选择"Libraries";
• 点击“Add JARs”,添加.jar。
这个时候工程如下图:
(5)编写activity_main.xml,如下:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="com.himi.oauthdemo.MainActivity" > 7 8 <Button 9 android:id="@+id/btn_oauth" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:text="Baidu OAuth" 13 android:onClick="onClickOAuth"/> 14 15 <TextView 16 android:id="@+id/tv_access_token" 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:text="@string/hello_world" /> 20 21 </LinearLayout>
布局效果,如下:
(6)MainActivity.java,如下:
1 package com.himi.oauthdemo; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.TextView; 7 8 import com.baidu.api.Baidu; 9 import com.baidu.api.BaiduDialog.BaiduDialogListener; 10 import com.baidu.api.BaiduDialogError; 11 import com.baidu.api.BaiduException; 12 13 public class MainActivity extends Activity { 14 private TextView mTvAccessToken = null; 15 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 mTvAccessToken = (TextView) findViewById(R.id.tv_access_token); 22 } 23 24 public void onClickOAuth(View v) { 25 //调用百度授权 26 final Baidu baidu = new Baidu("fnREQtw4FLhdL932ESpj68Gw", this); 27 /** 28 * authorize(activity, isForceLogin, isConfirmLogin, listener); 29 * 参数activity:Activity 30 * 参数isForceLogin:是否强制登录 31 * 参数isConfirmLogin: 是否让用户每次确认登录 32 * 参数listener:监听接口 33 */ 34 baidu.authorize(this, true, true, new BaiduDialogListener() { 35 36 /** 37 * 百度登录错误的时候,回调此方法 38 */ 39 public void onError(BaiduDialogError arg0) { 40 refreshUI("error"); 41 42 } 43 44 /** 45 * 百度登录完成成功的时候,回调此方法 46 */ 47 public void onComplete(Bundle arg0) { 48 refreshUI(baidu.getAccessToken()); 49 50 } 51 52 /** 53 * 用户取消,回调此方法 54 */ 55 public void onCancel() { 56 // TODO 自动生成的方法存根 57 refreshUI("cancel"); 58 } 59 60 /** 61 * 异常信息处理,回调此方法 62 */ 63 public void onBaiduException(BaiduException arg0) { 64 refreshUI("Exception"); 65 66 } 67 }); 68 69 } 70 71 private void refreshUI(final String msg) { 72 runOnUiThread(new Runnable() { 73 74 public void run() { 75 mTvAccessToken.setText(msg); 76 77 } 78 }); 79 80 } 81 82 83 }
(7)AndroidMainfest.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.himi.oauthdemo" 4 android:versionCode="1" 5 android:versionName="1.0" > 6 7 <uses-sdk 8 android:minSdkVersion="15" 9 android:targetSdkVersion="17" /> 10 11 <uses-permission android:name="android.permission.INTERNET" /> 12 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 13 14 <application 15 android:allowBackup="true" 16 android:icon="@drawable/ic_launcher" 17 android:label="@string/app_name" 18 android:theme="@style/AppTheme" > 19 <activity 20 android:name=".MainActivity" 21 android:label="@string/app_name" > 22 <intent-filter> 23 <action android:name="android.intent.action.MAIN" /> 24 25 <category android:name="android.intent.category.LAUNCHER" /> 26 </intent-filter> 27 </activity> 28 </application> 29 30 </manifest>
(8)布署到模拟器上,如下: