AndroidQQ第三方登录

来源:互联网 发布:算法导论第十五章答案 编辑:程序博客网 时间:2024/05/22 02:05
 集成QQ登录
 
 在lib导入该open_sdk_r5886_lite.jar包

AndroidManifest.xml
<!-- 注册SDKActivity -->
        <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="1106536498" /> <!-- 开放平台获取的APPID -->
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity"
                  android:theme="@android:style/Theme.Translucent.NoTitleBar"
                  android:screenOrientation="portrait">
</activity>
/**
 * 登陆activity
 *
 */
public class LoginAct extends Activity implements View.OnClickListener {


     // QQ登录
    private Button login_qq;
    private static final String TAG = "LoginAct";
    private static final String APP_ID = "1106536498";//官方获取的APPID
    private Tencent mTencent;
    private BaseUiListener mIUiListener;
    private UserInfo mUserInfo;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.act_login);


        //传入参数APPID和全局Context上下文
        mTencent = Tencent.createInstance(APP_ID,LoginAct.this.getApplicationContext());


        initView();
    
    }


    private void initView() {


      login_qq = (Button) findViewById(R.id.login_qq);
 login_qq.setOnClickListener(this);
 
    }




    @Override
    public void onClick(View view) {
        if(view== login_qq){

            Toast.makeText(LoginAct.this, "第三方QQ登录", Toast.LENGTH_SHORT).show();
            mIUiListener = new BaseUiListener();
            mTencent.login(LoginAct.this,"all", mIUiListener); //all表示获取所有权限


        }
    }




    /**
     *  QQ登录
     * 自定义监听器实现IUiListener接口后,需要实现的3个方法
     * onComplete完成 onError错误 onCancel取消
     */
    private class BaseUiListener implements IUiListener {


        @Override
        public void onComplete(Object response) {
            Toast.makeText(LoginAct.this, "授权成功", Toast.LENGTH_SHORT).show();
            Log.e(TAG, "response1111:" + response);
            String str = response.toString();
            com.alibaba.fastjson.JSONObject obj = com.alibaba.fastjson.JSONObject.parseObject(str);//阿里巴巴的快一点
            try {
                String openID = obj.getString("openid");
                String accessToken = obj.getString("access_token");
                String expires = obj.getString("expires_in");
                mTencent.setOpenId(openID);
                mTencent.setAccessToken(accessToken,expires);
                QQToken qqToken = mTencent.getQQToken();
                mUserInfo = new UserInfo(getApplicationContext(),qqToken);
                mUserInfo.getUserInfo(new IUiListener() {
                    @Override
                    public void onComplete(Object response) {
                        Log.e(TAG,"登录成功"+response.toString());
//在这里处理保存用户信息到数据库或其他操作
                    }


                    @Override
                    public void onError(UiError uiError) {
                        Log.e(TAG,"登录失败"+uiError.toString());
                    }


                    @Override
                    public void onCancel() {
                        Log.e(TAG,"登录取消");


                    }
                });
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }


        @Override
        public void onError(UiError uiError) {
            Toast.makeText(LoginAct.this, "授权失败", Toast.LENGTH_SHORT).show();


        }


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


    /**
     * 在调用Login的Activity或者Fragment中重写onActivityResult方法
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == Constants.REQUEST_LOGIN){
            Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }



}


jar包及.class文件http://download.csdn.net/download/qq_38260867/10118056
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫国际买东西被税要退货怎么办 国外快递被税了怎么办 手机上传图片时过大怎么办 原网页被重新排版怎么办 文件目录损坏且无法读取怎么办 360木马查杀蓝屏怎么办 电脑上传的文件大小超过限制怎么办 文件最大不超过200m怎么办 抖音上传文件太大怎么办 下载ppt变成php文件怎么办 数据库bak文件损坏了怎么办? wps文档大小超出上传限制怎么办 手机百度用微盘下载不了文件怎么办 无法读取源文件或磁盘怎么办 文件中转站未安装上传控件怎么办 手机外国网址网速太差怎么办 istpng里显示不出图片怎么办 电脑上保持登录状态后怎么办 电脑打游戏闪退怎么办 实训老师教不好怎么办 善心汇损失的钱怎么办 去陌生的地方怕传销怎么办 被执行人不提供财产线索怎么办 宽带ip地址改了怎么办 移动宽带恢复出厂设置了怎么办 移动100兆网速慢怎么办 手机显示无法解析dns地址怎么办 台式电脑宽带连接不上怎么办 电信宽带账号登录密码忘记了怎么办 电信校园宽带超时了怎么办 宽带连接账号密码忘了怎么办 移动宽带路由器上不了网怎么办 移动宽带太卡了怎么办 电信adsl密码忘记了怎么办 移动宽带无法连接网络怎么办 移动宽带电视无信号怎么办 联通网线故障电话打不通怎么办 w10系统ip地址错误怎么办 移动流量太贵了怎么办 修改wifi密码ip地址怎么办 苹果6s接电话声音小怎么办