新浪微博客户端开发之设计思路跟Oauth2.0认证登录
来源:互联网 发布:逆战ak无后座宏数据 编辑:程序博客网 时间:2024/05/18 07:15
先看微博的整体样子,有了一定的轮廓再分包,大致可分为四个包:一个专门显示界面的Activity包,一个net包(主要包括对网络的一些操作,比如:获取所有的好友信息,评论信息等),工具包Tookit(主要对一些常见的公共操作如:日期和String的相互转换),还有一个服务包(主要对一些适配器adapter,监听器等的操作)
开发之前我们必须在新浪开放平台http://open.weibo.com/development/申请一个key,具体操作就不说,网上有一大把的图片教程,很简单的。后面我们都是通过这个key来拿新浪服务器数据的。有了这个key后,我们还需要下载一个新浪已经开发好的项目sina_oauth2.0(觉得难找的可以看我csdn资源进行下载,同时我也把图片资源也一起打包发过去,待会就上传),它相当于一个帮助类,我们进行Oauth2.0认证时,或者通过新浪API接口获取数据时,它里面都封装了一些常用的方法,所以我们下载了这个项目后就把它import工作空间同时把它作为lib。
好了有了前面的基础知识,我们来看下效果图:
登录页面很简单一个的实现ImageView 一个对话框 下面是登录界面(LoginActivity):
public class LoginActivity extends Activity{
private boolean b ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login) ; //开一个新的线程 去验证信息// new Thread(new Runnable() {// // public void run() {// // Log.v("otcyan", b+"--->") ;// }// }) ; // //开一个handler 去更新 界面 的元素// Handler handler = new Handler(){// public void handleMessage(Message msg) {// if(msg.what==LoginActivity.MSG){// // ++count ;// if(count==3){// loding.setText(R.string.loding) ;// count = 0 ;// }else {// for (int i = 0; i < count; i++) {// sb.append(".") ;// }// loding.setText(loding.getText().toString()+sb.toString()) ;// }// }// };// } ; //loding(handler); Oauth oauth = new Oauth(LoginActivity.this) ; Utility.setAuthorization(new Oauth2AccessTokenHeader()) ; b = oauth.login() ; Log.v("otcyan", b+"") ; if(b){ Log.v("otcyan", "entry") ; //已经授权 数据 已经准备完毕 启动mainactivity进行数据操作 Intent intent = new Intent(this, MainActivity.class) ; startActivity(intent) ; finish() ; }else{ Log.v("otcyan", "no entry") ; //启动另外一个activity进行授权 Intent intent = new Intent(this,DialogActivity.class) ; startActivity(intent) ; finish() ; } }}
这个界面的布局文件如下(布局文件没写好 大家不必参考我的,这只是一个笔记我把它贴出来了):
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/splash_background" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ver" android:layout_marginLeft="15dp" android:layout_marginTop="15dp" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/loding" android:text="@string/loding" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerInParent="true" android:textSize="24dp" /> <ImageView android:id="@+id/authorimageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/author" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" /> </RelativeLayout> </LinearLayout>
下面是一个授权的界面(DialogActivity.java)
package com.otcyan.weibo.activity;import com.otcyan.weibo.net.MyWeiboDialogListener;import com.otcyan.weibo.net.OtWeibo;import com.weibo.net.Weibo;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class DialogActivity extends Activity{private Dialog dialog = null ;private Button bn = null ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog) ;//添加一个dialogView diaView=View.inflate(this, R.layout.logindialog, null);dialog=new Dialog(DialogActivity.this,R.style.dialog);dialog.setContentView(diaView);dialog.show();bn = (Button) diaView.findViewById(R.id.start) ;Log.v("otcyan", "bn------------------->"+bn) ;bn.setOnClickListener(new OnClickListener() {public void onClick(View v) {//当点击 开始的时候 进行授权 操作Weibo weibo = Weibo.getInstance() ;weibo.setupConsumerConfig(OtWeibo.CONSUMER_KEY, OtWeibo.CONSUMER_SECRET) ;weibo.setRedirectUrl(OtWeibo.SIAN_CALLBACK) ;weibo.authorize(DialogActivity.this, new MyWeiboDialogListener(DialogActivity.this)) ;}}) ;}}
布局文件如下:
<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/cmcc_splash_background" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:src="@drawable/ver1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" /> </LinearLayout>
以下是当点击登录时候的Oauth2.0授权:
package com.otcyan.weibo.net;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.os.Bundle;import android.util.Log;import android.widget.Toast;import com.otcyan.weibo.activity.MainActivity;import com.weibo.net.AccessToken;import com.weibo.net.DialogError;import com.weibo.net.Weibo;import com.weibo.net.WeiboDialogListener;import com.weibo.net.WeiboException;public class MyWeiboDialogListener implements WeiboDialogListener {private Context context = null ;public MyWeiboDialogListener(Context context){this.context = context ;}public void onComplete(Bundle values) {String token = values.getString("access_token");String expires_in = values.getString("expires_in");//获取这个用户的uidString uid = values.getString("uid");Log.v("otcyan", "uid---------->"+uid) ;Toast.makeText(context, "授权成功!!获得token值:"+token, Toast.LENGTH_LONG).show() ;//根据 token 构建一个AccessTokenAccessToken accessToken = new AccessToken(token,OtWeibo.CONSUMER_SECRET);//到期时间 accessToken.setExpiresIn(expires_in);Weibo.getInstance().setAccessToken(accessToken);///保存到sharedpreferenceSharedPreferences preferences = context.getSharedPreferences(OtWeibo.SHARED_OAUTH, 0) ;Editor editor = preferences.edit() ;editor.putString(OtWeibo.ACCESS_TOKEN, token); editor.putString(OtWeibo.EXPIRES_IN, expires_in); editor.putString(OtWeibo.UID, uid) ;editor.commit() ;//启动Intent intent = new Intent();intent.setClass(context, MainActivity.class);context.startActivity(intent);}public void onWeiboException(WeiboException e) {}public void onError(DialogError e) {}public void onCancel() {}}
这样就完成了通过Oauth2.0对用户名跟密码的验证了。。很简单吧!!!
下一章讲记录主界面的思路与实现 对于
- 新浪微博客户端开发之设计思路跟Oauth2.0认证登录
- iOS7 新浪微博客户端开发 (OAuth2.0认证篇)
- 新浪博客开发 授权认证 OAuth2.0
- iOS 新浪微博客户端Demo实践之(一)OAuth2.0认证
- iOS 新浪微博客户端Demo实践之(一)OAuth2.0认证
- iOS 新浪微博客户端Demo实践之(一)OAuth2.0认证
- 新浪微博客户端开发之OAuth认证篇
- 新浪微博客户端开发之OAuth认证篇
- android新浪微博Oauth2.0认证以及登录
- android新浪微博Oauth2.0认证以及登录
- android新浪微博Oauth2.0认证以及登录
- android新浪微博Oauth2.0认证以及登录
- Android上开发新浪微博OAuth2.0认证
- android新浪微博开发最新OAuth2.0认证
- Android上开发新浪微博OAuth2.0认证
- iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)
- iphone开发我的新浪微博客户端-用户登录OAuth授权认证篇(1.3)
- 新浪微博客户端OAuth2.0授权
- Android 4.0 Contacts 通话记录界面的分析(源码)
- js 自定义下拉选择框
- 用户的访问权限过滤器,防止用户直接输入URL直接访问资源。
- python中关于Datetime类型显示的问题。
- 系统优化之"大循环在内,小循环主外"为什么会效率高
- 新浪微博客户端开发之设计思路跟Oauth2.0认证登录
- nginx源码分析——初始化log
- LeetCode-Sudoku Solver
- 验证(Verification)与确认(Validation)的区别
- 一篇文章让你读懂咨询公司的内幕
- VC++6.0下的工程在VS2008中打开注意事项 (zz)
- 风讯DotNetCMS sp5安装笔记
- AS3.0实现声音的波形
- 新手学习LINUX的命令(来自微信公众号:Linux中国)