使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
优采云 发布时间: 2021-11-01 20:07使用新浪微博开放平台api同步微博内容至自己网站(weibo.sdk.android--这个是sina微博微博登陆认证的源码)
首先要告诉大家的是,新浪微博API项目已经转移到GitHub上,原来的Google Code()项目没有更新。如果使用旧代码运行登录,会弹出网页错误bug。最新地址在:
界面也从之前的V1转为V2。具体信息请参考:。但是如果你像我一样从头开始,不用担心,直接去github下载最新的SDK即可。
下载源代码后解压:
哎,本来不想关心各个文件夹在干什么的……不过想起博客的格言……还是有问题,别偷懒,想问题……
weibo.sdk.android ---- 这是新浪微博登录认证的源码。它是一个 Android Lib 项目。什么是ALP这里就不解释了。同学们可以参考链接( )。
weibo.sdk.android.api ---- 这是新浪微博交互界面的源码,是一个ALP。
weibo.sdk.androi.sso ---- 这是新浪微薄的SSO源码。如果不了解SSO,请看百度百科:
weibo.sdk.android.sso.demo ---- 最后一个是我们需要的Demo,我们可以在Eclipse中引入这个项目。
凌乱的 Doc ---- 我猜它是在 linux 下写的还是什么?无论如何,这是技术文档。新浪真是懒得开发。本文档中的某些内容不再有效,例如 Android 权限声明。无论如何,请随意看看。
weibo.sdk.android.sso.jar ---- 这是你需要引入到自己项目中的jar包。
在这个文章中,我们不谈其他,只谈调用sina接口进行登录认证,其余功能请参考官方Demo。
首先,我们创建一个Android项目,命名为LoginTest
创建布局文件:
创建活动并在其中放置一个按钮。点击按钮后,会弹出新浪认证窗口。认证成功后,界面上会显示认证文本。
package com.example.logintest;
import java.text.SimpleDateFormat;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
public class MainActivity extends Activity {
private Weibo mWeibo;
private static final String CONSUMER_KEY = "966056985";// 替换为开发者的a*敏*感*词*ey,例如"1646212860";
private static final String REDIRECT_URL = "http://www.sina.com";
public static Oauth2AccessToken accessToken;
private TextView mText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);
Button btn = (Button) findViewById(R.id.button1);
mText = (TextView) findViewById(R.id.textView1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWeibo.authorize(MainActivity.this, new AuthDialogListener());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class AuthDialogListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
MainActivity.accessToken = new Oauth2AccessToken(token, expires_in);
if (MainActivity.accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
.format(new java.util.Date(MainActivity.accessToken
.getExpiresTime()));
mText.setText("认证成功: \r\n access_token: " + token + "\r\n"
+ "expires_in: " + expires_in + "\r\n有效期:" + date);
try {
Class sso = Class
.forName("com.weibo.sdk.android.api.WeiboAPI");// 如果支持weiboapi的话,显示api功能演示入口按钮
} catch (ClassNotFoundException e) {
// e.printStackTrace();
Log.i("H3c", "com.weibo.sdk.android.api.WeiboAPI not found");
}
AccessTokenKeeper.keepAccessToken(MainActivity.this,
accessToken);
Toast.makeText(MainActivity.this, "认证成功", Toast.LENGTH_SHORT)
.show();
}
}
@Override
public void onError(WeiboDialogError e) {
Toast.makeText(getApplicationContext(),
"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "Auth cancel",
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(getApplicationContext(),
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
}
将使用 AccessTokenKeeper 对象。该对象用于存储认证信息。可以从Demo中获取,直接复制粘贴即可。
最后,添加权限(那一团糟的描述。doc 有点错误):
啊,就是这样。
一开始,我在纠结那个新浪APP_KEY,也就是应用中的CONSUMER_KEY。我认为要获得A*敏*感*词*EY,我必须上传工作,但现在我还没有做到。如何上传?这是一个鸡和蛋的Bug。后来想太多了!A*敏*感*词*EY的作用应该是在认证登录时弹出的登录框中显示你的应用名称。比如Demo中显示的是“新浪在你的掌中”。我们在开发应用等的时候可以参考demo先做功能,等所有功能完成后,上传APP获取A*敏*感*词*EY,然后替换。
这篇文章纯粹是我今天的初步研究所写的。如有不对之处,请指出!
最后附上新浪微薄的API:%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0