新浪微博认证——应用程序支持新浪微博登陆
首先我想告诉大家新浪微博API项目已经转移到GitHub上了,原Google Code (http://code.google.com/p/android-weibo-sdk/downloads/list)的工程已经不更新了。如果使用旧的代码运行登陆,会弹出网页错误的Bug。最新的地址在:https://github.com/mobileresearch/weibo_android_sdk/downloads
接口也从之前的V1转换到V2了,具体信息可参照:http://open.weibo.com/wiki/V1_To_V2。但是如果你跟我一样是从零开始,就不用管这些了,直接去github上下载最新的SDK就行了。
源码下载完后解压:
哎,本来不想管这里面各个文件夹都是干嘛的……但是想起博客那句座右铭……我还是遇到问题别偷懒,好好想问题吧……
weibo.sdk.android ---- 这个是sina微博登陆认证的源码是个Android Lib project,何为ALP这里就不解释了,同学们可以参考(http://www.mielf.net/featherelf/simple-android-library-project)这个链接。
weibo.sdk.android.api ---- 这个是sina微博交互接口的源码是个ALP。
weibo.sdk.androi.sso ---- 这个是sina微薄SSO源码,不懂SSO的请看百度百科:http://baike.baidu.com/view/190743.htm
weibo.sdk.android.sso.demo ---- 最后一个才是我们需要的Demo,我们在Eclipse中引入这一个工程即可。
乱七八糟的Doc ---- 估计是linux下写的吧还是怎么的?反正是技术说明文档,新浪开发真懒,这文档里面有些内容已经无效了,比如Android权限声明那块,反正大家随便看看吧。
weibo.sdk.android.sso.jar ---- 这个是大家需要引入到自己工程中的jar包。
这篇文章我们不多说别的,仅仅只说调用sina接口登陆认证,其余功能大家自己看官方Demo。
首先我们创建一个Android工程,取名LoginTest
创建一个布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:text="@string/hello_world"tools:context=".MainActivity" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_alignRight="@+id/textView1"android:layout_marginRight="46dp"android:layout_marginTop="60dp"android:text="Button" /></RelativeLayout>
创建Acivity,里面放入一个Button,点击Button的时候弹出新浪认证窗口,认证成功后显示认证文字在界面上。
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";// 替换为开发者的appkey,例如"1646212860";private static final String REDIRECT_URL = "http://www.sina.com";public static Oauth2AccessToken accessToken;private TextView mText;@Overridepublic 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() {@Overridepublic void onClick(View v) {mWeibo.authorize(MainActivity.this, new AuthDialogListener());}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}class AuthDialogListener implements WeiboAuthListener {@Overridepublic 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();}}@Overridepublic void onError(WeiboDialogError e) {Toast.makeText(getApplicationContext(),"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();}@Overridepublic void onCancel() {Toast.makeText(getApplicationContext(), "Auth cancel",Toast.LENGTH_LONG).show();}@Overridepublic void onWeiboException(WeiboException e) {Toast.makeText(getApplicationContext(),"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();}}
}
其中会用到AccessTokenKeeper对象,这个对象用来保存已认证的信息的,可以从Demo中获取,直接复制粘贴。
最后是添加权限(那个乱七八糟.doc里描述稍微有点错误):
<uses-permission android:name="android.permission.INTERNET" ></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.WRITE_APN_SETTINGS" ></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
啊,就是这样。
然后刚开始我一直在纠结那个新浪APP_KEY也就是应用程序中的CONSUMER_KEY,我看获得APPKEY必须要有作品上传,但是现在我作品还没有做出来怎么上传啊,这就是个鸡生蛋蛋生鸡的Bug啊。后来想想应该是我想太多了!APPKEY的作用应该就是在认证登陆的时候弹出的登陆框中显示你的应用程序名称,比如Demo中显示是“掌中新浪Android版”,我们在做应用开发的时候完全可以参照Demo先做功能,等全部功能完成之后再上传APP获取APPKEY,然后替换即可。
本文纯属我今天初略研究所写,如有不对的地方,请各位指出!
最后附上新浪微薄API:http://open.weibo.com/wiki/%E5%B9%B3%E5%8F%B0%E6%A6%82%E8%BF%B0
新浪微博认证——应用程序支持新浪微博登陆相关推荐
- Shiro框架:Shiro简介、登陆认证入门程序、认证执行流程、使用自定义Realm进行登陆认证、Shiro的MD5散列算法
一.Shiro介绍: 1.什么是shiro: (1)shiro是apache的一个开源框架,是一个权限管理的框架,实现用户认证.用户授权. (2)spring中有spring security,是一个 ...
- python新浪微博认证及发微
新浪微博认证需要安装新浪微博的API(Python),安装好后就可以使用微博提供的的各种接口.这里只简单介绍认证和发微.· 首先可以通过微博开放平台注册应用申请APP_KEY和APP_SECRET,它 ...
- 最新免费新浪微博认证方法,不需要微博认证的硬性条件
关于新浪微博认证,点开这篇文章的估计也是玩微博或者想认证微博的,微博认证需要的那几个硬性指标,相信大家都知道,唯独的就是当你满足这些条件的时候,就最后一个资质证明把很多没有资质证明的小草根挡在门外,我 ...
- IOS开发——新浪微博认证失败处理
IOS开发--新浪微博认证失败处理 认证失败错误提示: 请求返回错误( error.errorDescription):Insufficient app permissions! 1,检查 分享集成部 ...
- 小程序支持主体迁移了
微信偷偷放大招:小程序支持主体迁移了 微信偷偷发布一个重磅消息:小程序支持主体迁移了. 具体设置方法:登陆小程序后台,依次点击[设置]-[主体信息]-[详情]-[小程序迁移]即可迁移你的小程序. 小程 ...
- 个人小程序支持哪些小程序服务类目
大家都知道微信小程序从注册主体上分为个人小程序和企业小程序,其中,个人小程序因为注册后无法认证被平台在很多方面限制了权限,使得个人小程序和企业小程序的区别很大,其中之一就是在小程序服务类目上的范围不一 ...
- java的行业认证_Sun认证Java程序员考试介绍
Sun认证Java程序员考试介绍 Sun Microsystems在行业中被认为是同行中最具创造性的企业之一,它想尝试新的软件方式和定价模式等等.以下是关于Sun认证Java程序员考试介绍,欢迎大家参 ...
- 参加Sun认证Java程序员_sun认证java程序员笔试经验
sun认证java程序员笔试经验 SCJP测验Java程序设计概念及能力,内容偏重于Java语法及JDK的内容;SCJD则进一步测试用Java开发应用程序的能力,考试者必须先完成一个程序的设计方案,再 ...
- SUN认证JAVA程序员(SCJP)招生简章
<script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...
最新文章
- 区块链技术未来可能用于哪些方面?
- linux su -c命令
- java流程控制图_Java流程控制
- PTA L1_043 阅览室(详解坑点)
- 中科院分词系统(NLPIR)JAVA简易教程
- 设计模式--代理(Proxy)模式
- C/C+语言struct深层探索
- JavaScript 中 obj.hasOwnProperty(prop) 方法
- c语言修仙受控可看吗,强推三本神奇到爆的小说,c语言修仙,程序员与修真会擦出什么火花...
- vbox linux centos 6,VirtualBox搭建 CentOS7.6
- Rsync 服务安全加固
- linux 串口驱动
- 【Windows XP】下载地址及产品密钥
- [Android源码分析]L2CAP的bind分析以及psm和cid的介绍和实现
- 浅谈AI模型的可解释性、安全性与正义性(中)
- B-004 LC滤波器的基础知识
- Fiddler如何进行弱网测试
- JavaScript脚本延迟加载的方式有哪些?
- 易语言超级列表框表项关键字搜索代码示例_易语言
- 在深圳java三年经验薪资多少正常,使用/教程/实例