第一步注册一个账户,并创建一个应用。获取app ID与 app Key。

第二步下载sdk

第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定。

3.1 修改清单文件,主要是加入一个webview的activity

[html]
<activity
android:name="com.tencent.weibo.webview.OAuthV2AuthorizeWebView"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.tencent.weibo.webview.OAuthV2AuthorizeWebView"
android:label="@string/app_name" >
</activity>
3.2 将Android_SDK_v1.2.jar与httpmime-4.1.3.jar导入libs中就好。

3.3 在需要三方登录的地方,调用相应的api即可。

下面是小demo工程的清单文件及activity中api代码简单示例。
[html]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.chesterweibodemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<!-- 允许网络访问 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<!-- demo activity,调用api -->
<activity
android:name=".ChesterWeiboDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- OAuth Version 2. 使用 WebView 辅助进行ImplicitGrant方式授权必须 -->
<activity
android:name="com.tencent.weibo.webview.OAuthV2AuthorizeWebView"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.chesterweibodemo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="10" />

<!-- 允许网络访问 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<!-- demo activity,调用api -->
<activity
android:name=".ChesterWeiboDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- OAuth Version 2. 使用 WebView 辅助进行ImplicitGrant方式授权必须 -->
<activity
android:name="com.tencent.weibo.webview.OAuthV2AuthorizeWebView"
android:label="@string/app_name" >
</activity>
</application>
</manifest>
ChesterWeiboDemoActivity 代码如下:
[java]
package com.test.chesterweibodemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;
import com.tencent.weibo.api.UserAPI;
import com.tencent.weibo.constants.OAuthConstants;
import com.tencent.weibo.oauthv2.OAuthV2;
import com.tencent.weibo.webview.OAuthV2AuthorizeWebView;
/**
* @author chensf5 2013-1-22
*/
public class ChesterWeiboDemoActivity extends Activity {
private static final String TAG = "ChesterWeiboDemoActivity";
private OAuthV2 oAuth;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//验证回调url地址,随便填写个 http://www.tencent.com/zh-cn/index.shtml
oAuth = new OAuthV2("http://apk.91.com/Soft/Android/com.palmit.player-1-1.0.html");
oAuth.setClientId("801297210"); // 2881064151
oAuth.setClientSecret("d163aeecdc7a9e5a601b03d66d4265be"); // be1dd1410434a9f7d5a2586bab7a6829
Intent intent = new Intent(ChesterWeiboDemoActivity.this,
OAuthV2AuthorizeWebView.class);
intent.putExtra("oauth", oAuth);
startActivityForResult(intent, 1); //开启webview加载个html页面
}
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (null != msg.obj && msg.obj instanceof String) {
String response = (String) msg.obj;
((TextView) findViewById(R.id.tv_content)).setText(response
+ "\n");
Log.i(TAG, response);
Log.i(TAG + "----------",
"redirectUri:" + oAuth.getRedirectUri() + ",clientId:"
+ oAuth.getClientId() + ",clientSecret:"
+ oAuth.getClientSecret() + ",responseType:"
+ oAuth.getResponeType() + ",type:"
+ oAuth.getType() + ",authorizeCode:"
+ oAuth.getAuthorizeCode() + ",accessToken:"
+ oAuth.getAccessToken() + ",expiresIn:"
+ oAuth.getExpiresIn() + ",grantType:"
+ oAuth.getGrantType() + ",refreshToken:"
+ oAuth.getRefreshToken() + ",openid:"
+ oAuth.getOpenid() + "," + oAuth.getOpenkey());
}
};
};
protected void onActivityResult(int requestCode, int resultCode,
final Intent data) {
if (requestCode == 1) {
if (resultCode == OAuthV2AuthorizeWebView.RESULT_CODE) {
new Thread() {
public void run() {
oAuth = (OAuthV2) data.getExtras().getSerializable("oauth");
// 调用API获取用户信息
UserAPI userAPI = new UserAPI(
OAuthConstants.OAUTH_VERSION_2_A);
try {
String response = userAPI.info(oAuth, "json");// 获取用户信息
Message msg = handler.obtainMessage();
msg.obj = response;
handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
userAPI.shutdownConnection();
};
}.start();
} else {
Log.i(TAG, "返回过来的不对");
}
} else {
Log.i(TAG, "没有授权可拿");
}
}
}

demo工程的清单文件及activity中api代码简单示例的更多相关文章

  1. Android中ProgressDialog的简单示例

    网上一般对进度条的示例都是如何显示,没有在任务结束如何关闭的文章,参考其他文章经过试验之后把整套进度条显示的简单示例如下: 建立android工程等工作都略去,Google一下就可以了. 下面来介绍主 ...

  2. Windchill 配置LOG文件,使开发中的代码能显示打印的信息

    如开发代码的类HomeLogic.java, 包路径在pnt.report.home 需求:需监控此类的打印数据 方法:配置D:\ptc\Windchill_10.1\Windchill\codeba ...

  3. C#中汉字排序简单示例(拼音/笔划)

    可以按照区域语言修改排序规则. class Program { static void Main(string[] args) { string[] arr = { "趙(ZHAO)&quo ...

  4. 关于SQL Server中存储过程在C#中调用的简单示例

    目录 0. 简介 1. 语法细节 2. 示例1:模拟转账 3. 示例2:测试返回DataTable 4. 源代码下载 shanzm-2020年5月3日 23:23:44 0. 简介 [定义]:存储过程 ...

  5. JAVA中CountDownLatch的简单示例

    public static void main(String[] args) throws InterruptedException { CountDownLatch latch =new Count ...

  6. Android的学习之路(四)项目中清单文件的学习和android中经常使用的显示单位

    1.所谓的清单文件就是项目中的AndroidManifest.xml文件.这个文件但是有大用处的.比方:app的名字,图标.app支持的版本号app的包名等等.以下我就介绍下这个清单文件的各个參数的作 ...

  7. 01_创建一个新的activity&activity配置清单文件

    今天开始学四大组件.今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者.四大组件,咱们一天一个.Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面.创建多个 ...

  8. Android清单文件详解(三)----应用程序的根节点<application>

    <application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下.通过<application>节 ...

  9. Android清单文件具体解释(三)----应用程序的根节点&lt;application&gt;

    <application>节点是AndroidManifest.xml文件里必须持有的一个节点,它包括在<manifest>节点下.通过<application>节 ...

随机推荐

  1. POJ 2406 KMP/后缀数组

    题目链接:http://poj.org/problem?id=2406 题意:给定一个字符串,求由一个子串循环n次后可得到原串,输出n[即输出字符串的最大循环次数] 思路一:KMP求最小循环机,然后就 ...

  2. 《DSP using MATLAB》示例Example4.4

    代码: x1 = [2, 3, 4]; x2 = [3, 4, 5, 6]; % x1 x2 sequences % n1 = 0:1:2; n2 = 0:1:3; n1 = 0:1:length(x ...

  3. express-19 路由2

    组织路由 在主应用程序文件中定义所有路由太笨重了.那样不仅会导致那个文件一直增长,还不利于功能的分离,因为那个文件里已经有很多东西了. 四条组织路由的指导原则 给路由处理器用命名函数: 到目前为止,我 ...

  4. wamp 2.5 开放访问权限和设置虚拟域名

    开放访问权限 D:\wamp\bin\apache\apache2.4.9\conf  里的 httpd.conf 搜索www   把 Require local 改为 Require all gra ...

  5. PE-2 & 暴模...

    题意: 求不大于4000000的斐波那契数列中,所有偶数之和. SOL: 还是只会暴模...看讨论区貌似有一个很牛逼的大神的发言? 英语水平太差... mark以下 The Fibonacci seq ...

  6. 51Nod 1001 数组中和等于K的数对 Label:Water

    给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0 ...

  7. [深入浅出WP8.1(Runtime)]文本块(TextBlock)

    4.3 文本块(TextBlock) 文本块(TextBlock)控件是用于显示少量文本的轻量控件,可以通过TextBlock呈现只读的文本,你可以把TextBlock控件理解为一种纯文本的展示控件. ...

  8. 【wikioi】1003 电话连线

    题目链接 算法: 最小生成树 PS:被卡过2天(中间的时间没去做).日期:2013-09-13 13:49:47 ~ 2013-09-17 13:01:07 此题为基础题 刚开始学图论时只会用Krus ...

  9. JavaScript进阶篇

    组团,并给团取个名(如何创建数组) 使用数组之前首先要创建,而且需要把数组本身赋至一个变量.好比我们出游,要组团,并给团定个名字“云南之旅”. 创建数组语法: var myarray=new Arra ...

  10. UVA 10791 - Minimum Sum LCM(坑)

    题目链接 不知道为什么,我用cin,cout就是过不了...改成scanf过了... 还是我居然理解错题意了,已经不能用看错了...至少两个数字,我理解成两个数字了,还写了个爆搜... #includ ...