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

第一步:准备工作

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

你可能感兴趣的:(android第三方登录)