最近腾讯微博官方网站API有的更新,不过也好久了.网上想找些案例,可是都没有介绍,好是郁闷,不过现在解决了,如果有类似问题的同学们,可以参考下,
这次的比较简单,对我们开发应用的程序员比较不错.下面我简单介绍下微博API的应用。
官方网址
为了顾全所有版本,我们就就用括号里面的jar包.
这里我就不详细介绍了,不懂的可以参考官方文档,很详细的.
下面这个是发表一条微博的接口参数:
首先我们就要获取Oauth或者是openid&openkey,但是我研究了好久没有弄出来,官方文档说,在请求时候callback不为空,在授权后redirect_url中会包含这两个值,但我看了官方给出例子的源码,他们根本就没有运用openid和openkey,他们用的是Oauth对象.所以我也跟着用Oauth对象请求.
不明白的可以参考源码.(其实官方已经给出很好的例子.)
不想看官方的我在这里简单演示一下:
我们首先创建OAuthV1对象.很简单,就是将oauthConsumeKey,oauthConsumerSecret设置进去.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button);
editText = (EditText) findViewById(R.id.edit);
but_send = (Button) findViewById(R.id.but_send);
but_logout = (Button) findViewById(R.id.but_logout);
but_custom = (Button) findViewById(R.id.but_custom);
button.setOnClickListener(this);
but_logout.setOnClickListener(this);
but_send.setOnClickListener(this);
but_custom.setOnClickListener(this);
preferences = getSharedPreferences(file, 0);
token = preferences.getString(TOKEN_KEY, "");
token_secret = preferences.getString(TOKEN_SECRET_KEY, "");
oAuth = new OAuthV1(oauthCallback);
oAuth.setOauthConsumerKey(oauthConsumeKey);
oAuth.setOauthConsumerSecret(oauthConsumerSecret);
if (token != null && !token.equals("") && !token_secret.equals("")
&& token_secret != null) {
button.setVisibility(View.GONE);
but_custom.setVisibility(View.GONE);
// 将认证后的值set进去就可以调用了.
oAuth.setOauthToken(token);
oAuth.setOauthTokenSecret(token_secret);
System.out.println("token=" + token);
System.out.println("token_secret=" + token_secret);
}
}
// 向腾讯微博开放平台请求获得未授权的Request_Token
try {
oAuth = OAuthV1Client.requestToken(oAuth);
} catch (Exception e) {
e.printStackTrace();
}
// 创建Intent,使用WebView让用户授权
intent = new Intent(MainActivity.this,
OAuthV1AuthorizeWebView.class);
intent.putExtra("oauth", oAuth);
startActivityForResult(intent, 1);
这一点也很好理解,就是将获取到的未授权的oauth传到OAuthV1AuthorizeWebView.java中.
这里我不过多解释,一会我们自定义webview在解释.
最后我们要重写onActivityResult来接收OAuth对象.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == OAuthV1AuthorizeWebView.RESULT_CODE) {
button.setVisibility(View.GONE);
but_custom.setVisibility(View.GONE);
// 从返回的Intent中获取验证码
oAuth = (OAuthV1) data.getExtras().getSerializable("oauth");
/*
* 注意:此时oauth中的Oauth_token和Oauth_token_secret将发生变化,用新获取到的
* 已授权的access_token和access_token_secret替换之前存储的未授权的request_token
* 和request_token_secret.
*/
// 在这里要保存access_token,access_token_secret
try {
oAuth = OAuthV1Client.accessToken(oAuth);
token = oAuth.getOauthToken();
token_secret = oAuth.getOauthTokenSecret();
editor = preferences.edit();
editor.putString(TOKEN_KEY, token);
editor.putString(TOKEN_SECRET_KEY, token_secret);
editor.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
我写的有点小乱,不过相信你也看的明白.我们将返回的Oauth执行:oAuth = OAuthV1Client.accessToken(oAuth);
这个时候我们需要保存token = oAuth.getOauthToken();
token_secret = oAuth.getOauthTokenSecret(); 这样以后我们就不用每次认证,只需要将这两个值set进去就可以直接调用相应接口,简单吧。
效果图:
不过这样有几点小不爽,打开认证页面不够友好,还有认证页面不能够很好控制,比如我想让他融入到我的项目里面,等等,所以我们需要对Oauth认证页面自定义,因此我们就用到了自定义webview.
我简单说明下自定义webview认证.其实简单,把官方代码copy下来,稍做变动就ok了.
package com.jj.tencent;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import com.tencent.weibo.constants.OAuthConstants;
import com.tencent.weibo.oauthv1.OAuthV1;
/***
* 腾讯微webview 认证
*
* @author zhangjia
*
*/
public class MyTencentWebViewActivity extends Activity {
public final static int RESULT_CODE = 1;
private static final String TAG = "OAuthV1AuthorizeWebView";
private OAuthV1 oAuth;
private LinearLayout linearLayout;// 进度条
private WebView mWebView;
/***
* 初始化 webview
*/
public void InitWebView() {
linearLayout = (LinearLayout) findViewById(R.id.ll_webview);
mWebView = (WebView) findViewById(R.id.mywebview);
mWebView.setVerticalScrollBarEnabled(false);
mWebView.setHorizontalScrollBarEnabled(false);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSupportZoom(true);
mWebView.requestFocus();
Intent intent = this.getIntent();
oAuth = (OAuthV1) intent.getExtras().getSerializable("oauth");
String urlStr = OAuthConstants.OAUTH_V1_AUTHORIZE_URL + "?oauth_token="
+ oAuth.getOauthToken();
mWebView.loadUrl(urlStr);
mWebView.setWebViewClient(client);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mywebview);
InitWebView();
}
WebViewClient client = new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i(TAG, "WebView onPageStarted...");
Log.i(TAG, "URL = " + url);
if (url.indexOf("checkType=verifycode") != -1) {
int start = url.indexOf("checkType=verifycode&v=") + 23;
String verifyCode = url.substring(start, start + 6);
oAuth.setOauthVerifier(verifyCode);
Intent intent = new Intent();
intent.putExtra("oauth", oAuth);
setResult(RESULT_CODE, intent);
view.destroyDrawingCache();
finish();
}
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
linearLayout.setVisibility(View.GONE);
}
};
}
实现效果:
这是演示效果,也许你看不出来有什么不同,下面请看这种情况:
(这是我正在开发的项目.)如果你单纯引用他给的webview是无法实现这种效果吧。就介绍这么多了,至于一些接口调用,发送,分享,获取好友等等只要参考API就好了.
如有不足之处,请您吉言指出,大家一起学习.感激直至. 如果不想敲了,请留下邮箱,我将尽快给你发过去.
分享到:
相关推荐
android 腾讯微博Oauth2.0认证以及自定义webview认证
自定义webView,实现自己想要的授权网页显示方式
自定义WebView页面中,长按文本的弹出选项、点击选择后,分享、转发、收藏选择文本
这个微博客户端中用到得一些知识点。 1:sqllite数据库的应用 2:SharedPreferences结合sqllite保存默认登录用户 3:圆角背景,圆角头像,.9.png格式在android中的应用 4:布局方面的当然是最常用的ReleativeLayout,...
自定义的WebView,可以自动适应屏幕的大小,可以监听网页上的点击事件
Android新浪微博,通过WebView来截取授权验证码 ~~~~ Android新浪微博,通过WebView来截取授权验证码 ~~~~
Android高级应用源码-自定义WebView,自带加载动画.zip
自定义WebView自带加载动画.zip
基于腾讯X5内核 目前已有功能: 1、文件浏览(支持pdf/ppt/doc/excel/txt) 2、文件上传(JS) 3、文件下载 4、Android与JS交互 5、自定义交互(进度条、下拉回弹) 6、视频播放 1、添加依赖和配置 根目录build....
腾讯微博的一般认证和自定义webview认证.建议用第二种自定义,扩展性较好,看起来也比较舒服.
Android WebView 新浪微博自动登陆
所谓SSO认证,通俗的一点讲就是,自己写的app需要使用新浪或腾讯微进行分享、发表微博等操作。如果用户的手机客户端安装了符合SSO认证的新浪、腾讯等微博客户端版本且已登录,则会自动启动新浪、腾讯等微博客户端...
RT,使用WebView实现新浪微博Oauth2.0认证,非截取html代码获取验证码 界面跳转无副作用
Android 基于x5Webview 浏览文件 office文档 已测试Android11 功能实现
源码参考,欢迎下载
Android-X5WebView基本封装和使用 通过OkHttp拦截器、自定义CookieJar有效完成客户端与H5端的Cookie同步管理 监听WebView的加载进度 滚动条的设置(隐藏或者显示,内侧显示还是外侧显示) 优化X5WebView的预加载问题...
自定义了一个webview 实现了进度条显示、在同一个webview中打开多链接以及页面的前进后退
自定义webview中的网页“拍照”按钮调用系统相机拍照的API接口MyBrowserAPI.CapturePhoto(filename),在网页JavaScript中调用以后返回存放照片的完整路径名,默认将照片存放在系统SD卡的根目录,包含整个工程中需要添加...
在android的webview中实现websocket通信
安卓Android源码——webview重载使用&自定义网址.rar