android 友盟第三方登录之微信登录

一、去微信开放平台的管理中心申请移动设备的审核(需进行开发者资质认证,每年300元)

1、获取应用的签名

android 友盟第三方登录之微信登录_第1张图片

 

2、在微信开放平台申请移动应用

两个注意点:①签名要填对 ②应用的包名要写对(tips: com.**.**)

在应用通过审核后,拿到了AppId和AppSecret,这样我们具备了和微信授权登录的基本条件。

二、导入友盟的第三方登录的jar包和资源

jar需要4个:

httpmime-4.1.3.jar SocialSDK_WeiXin_1.jar SocialSDK_WeiXin_2.jar umeng_social_sdk.jar

   三。在AndroidMenafest.xml中配置微信登录信息:


<activity
    android:name=".wxapi.WXEntryActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:exported="true"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
 
  

四.创建WXEntryActivity.java微信接收响应

WXEntryActivity是一个Activity,用来接收微信的响应信息。这里有几个需要注意的地方:

  • 它必须在"包名.wxapi"这个包下,如:你的应用包名为:com.lqr.test,则WXEntryActivity所在的包名必须为com.lqr.test.wxapi。
  • 创建后在AndroidManifest.xml文件中对WXEntryActivity进行设置:android:exported="true"。
  • WXEntryActivity.Java继承自WXCallbackActivity

package com.haier.uhome.appliance.wxapi;


import com.umeng.socialize.weixin.view.WXCallbackActivity;

public class WXEntryActivity extends WXCallbackActivity {

}
 
  
 
  

五、微信授权登录

/**
     * @功能描述 : 添加微信平台授权登录
     * @return
     */
    private void addWXPlatform() {
        // 注意:在微信授权的时候,必须传递appSecret

        mController = UMServiceFactory.getUMSocialService("com.umeng.login");
        // 添加微信平台,APP_ID、APP_SECRET都是在微信开放平台,移动应用通过审核后获取到的
        UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, APP_ID, APP_SECRET);
	//微信授权页面每次都出现,便于切换微信用户
        wxHandler.setRefreshTokenAvailable(false);
        wxHandler.addToSocialSDK();

    }
 /**
     * 授权。如果授权成功,则获取用户信息
     *
     * @param platform
     */
    private void login(SHARE_MEDIA platform) {
        mController.doOauthVerify(NewLoginMainActivity.this, platform,
                new SocializeListeners.UMAuthListener() {

                    @Override
                    public void onStart(SHARE_MEDIA platform) {
                        Toast.makeText(NewLoginMainActivity.this, "授权开始", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onError(SocializeException e,
                                        SHARE_MEDIA platform) {
                        Toast.makeText(NewLoginMainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onComplete(Bundle value, SHARE_MEDIA platform) {
                        Log.e(TAG, value.toString());
                        // 获取uid
//                        String uid = value.getString("uid");
                        String uid = value.getString("openid");
                        if (!TextUtils.isEmpty(uid)) {
                            // uid不为空,获取用户信息
                            getUserInfo(platform);
                            Toast.makeText(NewLoginMainActivity.this, "uid is " + uid, Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(NewLoginMainActivity.this, "授权失败...", Toast.LENGTH_LONG).show();
                        }
                    }

                    @Override
                    public void onCancel(SHARE_MEDIA platform) {
                        Toast.makeText(NewLoginMainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
                    }
                });
    }

    /**
     * 获取用户信息
     *
     * @param platform
     */
    private void getUserInfo(SHARE_MEDIA platform) {
        mController.getPlatformInfo(NewLoginMainActivity.this, platform,
                new SocializeListeners.UMDataListener() {

                    @Override
                    public void onStart() {

                    }

                    @Override
                    public void onComplete(int status, Map info) {

                        if (info != null) {
                            Toast.makeText(NewLoginMainActivity.this, info.toString(), Toast.LENGTH_SHORT).show();
                            String infoStr = info.toString();
                            JSONObject object = new JSONObject(info);
                            Gson gson = new Gson();
                            wxUserId = gson.fromJson(object.toString(), WXUserId.class);
                            WXLoginBody loginBody = new WXLoginBody(wxUserId.getOpenid());
                            BjDataBody body = BJServerBodyUtils.getBjDataBodyForWX(loginBody, true, "", "");
                            wxInfoPresenter.wxLogin(HttpConstant.BEIJING_URL_NEW_LOGIN_TEST, body);
//                            CommonUtils.LogWuwei(tag,"info is "+infoStr);
                            Log.e(TAG, "info is " + infoStr);
                        }
                    }
                });
    }
微信登录返回的用户信息:{"sex":2,"nickname":"****","unionid":"oGF9Wv3jsg******","privilege":[],"province":"Shandong","openid":"ol3gXuGbUnc_eW4********","language":"zh_CN","headimgurl":"http:\/\/wx.qlogo.cn\/mmopen\/fnXWjj3SlVWjPuSnnYYZWYmZWpuficJIPmd7ib4cyG5X61ytN3nw7ngDp03exyX*******qH\/0","country":"CN","city":"****"}

你可能感兴趣的:(第三方SDK)