第三方的登录与分享和退出登录

//需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- SDK2.1新增获取用户位置信息 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<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.GET_TASKS"/>
//需要的配置

<activity
    android:name="com.tencent.open.yyb.AppbarActivity"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.tencent.connect.avatar.ImageActivity" />
<activity
    android:name="com.tencent.connect.common.AssistActivity"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="behind"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
    android:name="com.tencent.tauth.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="tencent1106062414" />
        <!--应用的AppId要相同-->
    </intent-filter>

</activity>

//QQ的登录和获取权限的JAVA代码

/**
 * 继承的到BaseUiListener得到doComplete()的方法信息
 */
IUiListener loginListener = new BaseUiListener() {
    @Override
    protected void doComplete(JSONObject values) {//得到用户的ID  和签名等信息  用来得到用户信息
        Log.i("lkei",values.toString());
        initOpenidAndToken(values);
        updateUserInfo();
    }
};
/***
 * QQ平台返回返回数据个体 loginListener的values
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == Constants.REQUEST_LOGIN ||
            requestCode == Constants.REQUEST_APPBAR) {
        Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
    }
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onPointerCaptureChanged(boolean hasCapture) {

}

private class BaseUiListener implements IUiListener {
    @Override
    public void onComplete(Object response) {
        if (null == response) {
            Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
            return;
        }
        JSONObject jsonResponse = (JSONObject) response;
        if (null != jsonResponse && jsonResponse.length() == 0) {
            Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
            return;
        }
        Toast.makeText(MainActivity.this, "登录成功",Toast.LENGTH_LONG).show();
        doComplete((JSONObject)response);
    }

    protected void doComplete(JSONObject values) {

    }
    @Override
    public void onError(UiError e) {
        //登录错误
    }

    @Override
    public void onCancel() {
        // 运行完成
    }
}
/**
 * 获取登录QQ腾讯平台的权限信息(用于访问QQ用户信息)
 * @param jsonObject
 */
public static void initOpenidAndToken(JSONObject jsonObject) {
    try {
        String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
        String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
        String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
        if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
                && !TextUtils.isEmpty(openId)) {
            mTencent.setAccessToken(token, expires);
            mTencent.setOpenId(openId);
        }
    } catch(Exception e) {
    }
}
private void onClickLogin() {
    if (!mTencent.isSessionValid()) {
        mTencent.login(this, "all", loginListener);
    }
}
private void updateUserInfo() {
    if (mTencent != null && mTencent.isSessionValid()) {
        IUiListener listener = new IUiListener() {
            @Override
            public void onError(UiError e) {
            }
            @Override
            public void onComplete(final Object response) {
                Message msg = new Message();
                msg.obj = response;
                Log.i("tag", response.toString());
                msg.what = 0;
                mHandler.sendMessage(msg);
            }
            @Override
            public void onCancel() {
            }
        };
        mInfo = new UserInfo(this, mTencent.getQQToken());
        mInfo.getUserInfo(listener);

    }
}
Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (msg.what == 0) {
            JSONObject response = (JSONObject) msg.obj;
            if (response.has("nickname")) {
                try {
                    Gson gson=new Gson();
                    User user=gson.fromJson(response.toString(),User.class);
                    if (user!=null) {
                        tv_name.setText("昵称:"+user.getNickname()+"  性别:"+user.getGender()+"  地址:"+user.getProvince()+user.getCity());
                        tv_content.setText("头像路径:"+user.getFigureurl_qq_2());
                        Picasso.with(MainActivity.this).load(response.getString("figureurl_qq_2")).into(imageView);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }
};
//QQ分享

//qq分享
private void onClickShare() {
    final Bundle params = new Bundle();
    params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
            QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
    params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题");
    params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");
    params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,
            "https://www.baidu.com/s?tn=baidu&rsv_idx=1&wd=%E6%97%B6%E9%97%B4%E6%88%B3&rsv_cq=ClassCastException&rsv_dl=0_right_recom_21121&euri=6008d74d5b0c4a92973d23a07ddd5104");
    params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,
            "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
    params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "切切歆语");
    params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能");
    mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener1());
}
//回调接口  (成功和失败的相关操作)
private class BaseUiListener1 implements IUiListener {
    @Override
    public void onComplete(Object response) {
        doComplete(response);
    }

    protected void doComplete(Object values) {
    }

    @Override
    public void onError(UiError e) {
    }

    @Override
    public void onCancel() {
    }
}

@SuppressWarnings("unused")
private void shareToQQzone() {
    try {
        final Bundle params = new Bundle();
        params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
                QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
        params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "切切歆语");
        params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "sss");
        params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,
                "http://blog.csdn.net/DickyQie/article/list/1");
        ArrayList<String> imageUrls = new ArrayList<String>();
        imageUrls.add("http://media-cdn.tripadvisor.com/media/photo-s/01/3e/05/40/the-sandbar-that-links.jpg");
        params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
        params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT,
                QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
        Tencent mTencent = Tencent.createInstance("1106062414",
                MainActivity.this);
        mTencent.shareToQzone(MainActivity.this, params,
                new BaseUiListener1());
    } catch (Exception e) {
    }
}
 private int ret;
    private String msg;
    private int is_lost;
    private String nickname;
    private String gender;
    private String province;
    private String city;
    private String figureurl;
    private String figureurl_1;
    private String figureurl_2;
    private String figureurl_qq_1;
    private String figureurl_qq_2;
    private String is_yellow_vip;
    private String vip;
    private String yellow_vip_level;
    private String level;
    private String is_yellow_year_vip;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值