您的位置:首页 > 移动开发 > Android开发

android新浪微博登录获取用户信息

2017-04-11 15:19 357 查看

第一步:准备工作

在新浪微博开发者平台http://open.weibo.com/apps/注册并上传应用各种信息(比较多)获取到appkey,关于签名信息最好使用新浪提供的工具省心些,默认的授权回调页https://api.weibo.com/oauth2/default.html要与代码中一致。

第二步:下载新浪SDK添加到工程lib

repositories {
flatDir {
dirs 'libs'
}
}

compile(name: 'openDefault-1.0.0', ext: 'aar')


第三步:在AndroidManifest.xml文件中添加activity

<!--微博-->
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"></activity>


第四步:代码

public class LoginActivity extends BaseActivity {
private static final String SINA_WB_APPKEY = "513793262";
public static final String REDIRECT_URL = "https://api.weibo.com/oauth2/default.html";//默认REDIRECT_URL
private AuthInfo mAuthInfo;
private SsoHandler mSsoHandler;

private String userId = "";
private String name = "";
private String imgUrl = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAuthInfo = new AuthInfo(this, SINA_WB_APPKEY, REDIRECT_URL, null);
}

@OnClick({R.id.weibo})
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.weibo:
mSsoHandler = new SsoHandler(this, mAuthInfo);
mSsoHandler.authorize(new MyWeiboAuthListener());
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}

class MyWeiboAuthListener implements WeiboAuthListener {

@Override
public void onComplete(Bundle values) {

Oauth2AccessToken mAccessToken = Oauth2AccessToken.parseAccessToken(values);
BleLog.e(mAccessToken.toString());
if (mAccessToken.isSessionValid()) {
Map<String,String> pramas =  new HashMap<>();
pramas.put("access_token", mAccessToken.getToken());
pramas.put("uid", mAccessToken.getUid());
HttpUtil.get(mContext, "https://api.weibo.com/2/users/show.json", pramas, new MyStringCallback() {
@Override
public void onError(Call call, Exception e, int id) {

}

@Override
public void onResponse(String response, int id) {
BleLog.e(response);
JSONTokener jsonParser = new JSONTokener(response);
try {
JSONObject person = (JSONObject) jsonParser.nextValue();
name = person.getString("name");
userId = person.getString("id");
imgUrl =person.getString("profile_image_url");

} catch (JSONException e) {
e.printStackTrace();
}
}
});

} else {
// 应用程序签名不正确时,就会收到 Code,请确保签名正确
BleLog.e(values.getString("code", ""));
}
}

@Override
public void onCancel() {
}

@Override
public void onWeiboException(WeiboException e) {
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: