友盟:微信,QQ,新浪微博第三方登录

  1. 注册友盟账号——个人中心——U_Share(立即使用)——添加新应用
  2. 开发者中心——U_Share的android集成文档
  3. 按照文档先把jar包及所需资源文件都拷进去
  4. 在微信开放平台注册账号,创建应用,设置正确的签名
    ## 代码写法 ##
    1.manifests.xml中添加BaseApp
<!-- 友盟 -->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />

<application
        android:name=".BaseApp"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
    >
<!-- =======================友盟==================================== -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="59a8dc418f4a9*******">
        </meta-data>
        <!-- 新浪 -->
        <activity
            android:name="com.umeng.socialize.media.WBShareCallBackActivity"
            android:configChanges="keyboardHidden|orientation"
            android:exported="false"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">
        </activity>
        <!-- 微信登录回调 -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="portrait"/>
        <!-- qq -->
        <activity
            android:name="com.umeng.qq.tencent.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>

                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>

                <data android:scheme="tencent100424468"/>
            </intent-filter>
        </activity>
        <activity
            android:name="com.umeng.qq.tencent.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
        <!-- =======================友盟end==================================== -->
2.BaseApp.java中注册UMShareAPI
   public class BaseApp extends Application {
    private static BaseApp mApp;
    public static BaseApp getInstance() {
        return mApp;
    }
    @Override
    public void onCreate() {
        super.onCreate();
       //开启debug模式,方便定位错误,正式发布,请关闭该模式
        Config.DEBUG = false;
        //每次用户第三方登录都需要重新授权
        UMShareConfig config = new UMShareConfig();
        config.isNeedAuthOnGetUserInfo(true);
        UMShareAPI.get(this).setShareConfig(config);

        mApp = this;
        }
      //各个平台配置入口
    {
        PlatformConfig.setWeixin("wxb8b25fb968*******","04adc84a927951fa0c44336*******");
        PlatformConfig.setQQZone("1106*******","AedMzHvzd*******Z");
        PlatformConfig.setSinaWeibo("220551*******","542*******dd745793cc1602d9f*******","https://api.weibo.com/oauth2/default.html");
    }
    } 

3.在登录的地方调用

UMShareAPI umShareAPI = UMShareAPI.get(mContext);
                //登录微信调用
              umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, authListener);
                break;
            case R.id.weibo:
                umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.SINA, authListener);
                break;
            case R.id.qq:
                umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);
                break;
 //第三方登录
    UMAuthListener authListener = new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA platform) {
            showProgressDialog();
        }

        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
            dismissProgressDialog();
            if (platform == SHARE_MEDIA.WEIXIN) {
                weixinopenid = data.get("openid");
                wxName = data.get("screen_name");
                wxGender = data.get("gender");
                profile_image_url = data.get("profile_image_url");
                if (weixinopenid != null)
                    weixinLogin(weixinopenid);
            } else if (platform == SHARE_MEDIA.QQ) {
                weixinopenid = data.get("uid");
                wxName = data.get("name");
                wxGender = data.get("gender");
                profile_image_url = data.get("iconurl");
                if (weixinopenid != null)
                    qqLogin(weixinopenid);
            } else if (platform == SHARE_MEDIA.SINA) {
                weixinopenid = data.get("uid");
                wxName = data.get("name");
                wxGender = data.get("gender");
                profile_image_url = data.get("iconurl");
                if (weixinopenid != null)
                    weiboLogin(weixinopenid);
            }
            SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_id, weixinopenid);
            SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_name, wxName);
            SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_gender, wxGender);
            SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_url, profile_image_url);
        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
            dismissProgressDialog();
            Log.i("umeng", "openid: " + t.getMessage());
            Toast.makeText(mContext, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            dismissProgressDialog();
            Toast.makeText(mContext, "已取消", Toast.LENGTH_LONG).show();

        }
    };
//文档里说这段代码一定要写的,加载要使用微信登录的activity里
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

注:微博需要在测试信息里设置测试账号。半个小时生效

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值