使用新浪微博开放平台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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线