实现新浪微博第三方登录获取用户信息
来源:互联网 发布:mac svn 管理工具下载 编辑:程序博客网 时间:2024/05/22 13:54
第一步:创建Android项目下载新浪sdk
下载地址:https://github.com/sinaweibosdk/weibo_android_sdk
里面包含签名工具和新浪官方的debug.keystore
新浪的demo必须用官方的debug.keystore编译才能正常运行
第二步:登录新浪微博开放平台http://open.weibo.com/
创建应用
填写应用名称
填写项目的包名和签名
签名的获取方法:在下载好的新浪sdk包中包含有,安装在模拟器上,填写上本项目的包名即可获得对应的项目签名
填写完毕之后。
点击高级信息,填写好回调页
回调页可以为任意的网址
第三步:现在可以正式开始写代码啦
如果想要实现新浪的第三方登录,必须引入新浪的第三方library
weiboSDK
为
为啦避免引入失败,必须将weiboSDK和项目放在同一目录下,并保证supportv4 jar 包版本一致
将WeiboSDKDemo中lib下的所有so包拷贝到项目的lib目录下
将所需的权限及其他内容复制到清单配置文件中
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
</activity>
<service android:name="com.sina.weibo.sdk.net.DownloadService"
android:exported="false">
</service>
在布局文件中加入登录按钮
<com.sina.weibo.sdk.widget.LoginButton
android:id="@+id/login_button_style2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="10dp"
android:background="@drawable/com_sina_weibo_sdk_login_button_with_original_logo"
/>
将Demo中的Constants类复制到项目中
将AppKey和REDIRECT_URL替换成当前项目的AppKey和回调地址
Activity中代码如下:
package com.example.weibologin;
import java.text.SimpleDateFormat;
import com.sina.weibo.sdk.auth.AuthInfo;
import com.sina.weibo.sdk.auth.Oauth2AccessToken;
import com.sina.weibo.sdk.auth.WeiboAuthListener;
import com.sina.weibo.sdk.auth.sso.SsoHandler;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
import com.sina.weibo.sdk.openapi.UsersAPI;
import com.sina.weibo.sdk.openapi.models.User;
import com.sina.weibo.sdk.widget.LoginButton;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
public class MainActivity extends Activity {
private AuthInfo mAuthInfo;
private SsoHandler mSsoHandler;
private Oauth2AccessToken mAccessToken;
private LoginButton loginbt;
public UsersAPI mUsersApi;
private RequestListener mListener = new RequestListener() {
@Override
public void onComplete(String response) {
if (!TextUtils.isEmpty(response)) {
// 调用 User#parse 将JSON串解析成User对象
User user = User.parse(response);
if (user != null) {
Toast.makeText(MainActivity.this,
"获取User信息成功,用户昵称:" + user.screen_name,
Toast.LENGTH_LONG).show();
Log.i("TAG","登录成功!------->:"+user.screen_name);
// userTextView.setText(user.screen_name);
} else {
// userTextView.setText(response);
Toast.makeText(MainActivity.this, "2:" + response,
Toast.LENGTH_LONG).show();
}
}
}
@Override
public void onWeiboException(WeiboException arg0) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuthInfo = new AuthInfo(this, Constants.APP_KEY,
Constants.REDIRECT_URL, Constants.SCOPE);
loginbt=(LoginButton) findViewById(R.id.login_button_style2);
loginbt.setWeiboAuthInfo(mAuthInfo, new AuthListener());
loginbt.setStyle(LoginButton.LOGIN_INCON_STYLE_3);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(loginbt!=null)
{
loginbt.onActivityResult(requestCode, resultCode, data);
Log.i("TAG","登录成功!");
System.out.println(data.toString());
}
}
/**
* 微博认证授权回调类。
* 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 {@link SsoHandler#authorizeCallBack} 后,
* 该回调才会被执行。
* 2. 非 SSO 授权时,当授权结束后,该回调就会被执行。
* 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 SharedPreferences 中。
*/
class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
// 从 Bundle 中解析 Token
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
//从这里获取用户输入的 电话号码信息
mUsersApi =new UsersAPI(MainActivity.this, Constants.APP_KEY, mAccessToken);
Long uid = Long.parseLong(mAccessToken.getUid());
mUsersApi.show(uid, mListener);
String phoneNum = mAccessToken.getPhoneNum();
if (mAccessToken.isSessionValid()) {
Log.i("TAG","登录成功!成功~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("成功~~~~~~~~~~~~~~~~~~~~~~~~");
Oauth2AccessToken accessToken = Oauth2AccessToken.parseAccessToken(values);
if (accessToken != null && accessToken.isSessionValid()) {
String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(
new java.util.Date(accessToken.getExpiresTime()));
String format = getString(R.string.weibosdk_demo_token_to_string_format_1);
String s =String.format(format, accessToken.getToken(), date);
Log.i("TAG","登录成功------>"+s+phoneNum);
// AccessTokenKeeper.writeAccessToken(getApplicationContext(), accessToken);
}
} else {
// 以下几种情况,您会收到 Code:
// 1. 当您未在平台上注册的应用程序的包名与签名时;
// 2. 当您注册的应用程序包名与签名不正确时;
// 3. 当您在平台上注册的包名和签名与您当前测试的应用的包名和签名不匹配时。
String code = values.getString("code");
Log.i("TAG","登录成功!失败~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("失败");
// String message = getString(R.string.weibosdk_demo_toast_auth_failed);
// if (!TextUtils.isEmpty(code)) {
// message = message + "\nObtained the code: " + code;
// }
// Toast.makeText(WBAuthActivity.this, message, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancel() {
// Toast.makeText(WBAuthActivity.this,
// R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
System.out.println("出错~~~~~~~~~~~~~~");
Log.i("TAG","登录成功!出错~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
// Toast.makeText(WBAuthActivity.this,
// "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
- 实现新浪微博第三方登录获取用户信息
- 【Android实战】实现新浪微博第三方登录获取用户信息
- Android——第三方登录——新浪微博——获取用户信息——账户绑定
- android新浪微博登录获取用户信息
- php实现新浪微博第三方信任登录
- 基于Spring的新浪微博第三方登录实现
- 基于Spring的新浪微博第三方登录实现
- 微信api 第三方平台授权 登录 ,获取用户信息
- 微信第三方登录获取用户信息开发者文档
- Android Twitter第三方登录&获取用户信息
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法
- 新浪微博第三方登录体验
- Android 新浪微博第三方登录
- 新浪微博的第三方登录
- 新浪微博第三方登录
- 第三方登录之新浪微博
- 新浪微博第三方登录有感
- 新浪微博第三方登录
- AS小贴士
- Gradle学习系列之四——增量式构建
- NSURLConnection的GET和POST
- java final和static的区别
- LeetCode 33. Search in Rotated Sorted Array
- 实现新浪微博第三方登录获取用户信息
- 转载一篇写KMP算法写得非常好的博文
- public static void 可以写成 static public void
- 动态加载配置文件实践
- 关于centos 执行yum -y install xxx报错Could not retrieve mirrorlist http://mirrorlist.centos.org/?
- android 对线程池的探究
- 让html标签显示在页面上
- Python核心编程(第十三章)--面向对象编程
- Gradle学习系列之八——构建多个Project