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

来源:互联网 发布:澳洲mac电脑学生打几折 编辑:程序博客网 时间:2024/06/06 20:44

第一步:准备工作

在新浪微博开发者平台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) {        }    }
0 0