QQ 第三方登录

  先加载jar包:


在Activity中注册信息:

 需要添加的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

</activity>
<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="222222" />
    </intent-filter>
</activity>
<activity
    android:name="com.tencent.connect.common.AssistActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:theme="@android:style/Theme.Translucent.NoTitleBar">

</activity>
主类代码:

ublic class Geren extends Fragment {

    private Button bt;
    private TextView name ,dj,address;
    private Tencent mTencent;
    private String APP_ID = "222222";
    private IUiListener loginListener;
    private String SCOPE = "all";
    // private Tencent instance;

    private IUiListener userInfoListener;
    private  String TAG;
    private UserInfo mUserInfo;
    private ImageView img;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = View.inflate(getContext(), R.layout.geren, null);
        bt = v.findViewById(R.id.qqq);
        name = v.findViewById(R.id.name);
         dj=v.findViewById(R.id.dj);
        img = v.findViewById(R.id.img);
        address= v.findViewById(R.id.address);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                initQqLogin();
                mTencent.login(getActivity(), SCOPE, loginListener);
            }
        });

        return v ;
    }

    private void initQqLogin() {
        mTencent = Tencent.createInstance(APP_ID, getActivity());
        loginListener = new IUiListener() {
            @Override
            public void onComplete(Object o) {
                //登录成功后回调该方法
                Toast.makeText(getActivity(), "登录成功", Toast.LENGTH_SHORT).show();
                Log.e(TAG, "response:" + o);
                JSONObject obj = (JSONObject) o;
                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(getContext(),qqToken);
                    mUserInfo.getUserInfo(new IUiListener() {
                        @Override
                        public void onComplete(Object response) {
                            Log.e(TAG,"登录成功"+response.toString());
                           String json =   response.toString();
                            Gson gson = new Gson();
                            Geren_Bean bean = gson.fromJson(json, Geren_Bean.class);
                            ImageLoaderConfiguration cf = ImageLoaderConfiguration.createDefault(getActivity())
                                    ;
                            ImageLoader.getInstance().init(cf);
                            ImageLoader.getInstance().displayImage(bean.getFigureurl(),img);
                            name.setText(bean.getNickname());
                            dj.setText("36");
                            address.setText(bean.getCity());
                        }

                        @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(getActivity() ,"登录失败", Toast.LENGTH_SHORT).show();
                Log.e("LoginError:", uiError.toString());
            }

            @Override
            public void onCancel() {
                //取消登录后回调该方法
                Toast.makeText(getActivity(), "取消登录", Toast.LENGTH_SHORT).show();
            }
        };


    }


    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == Constants.REQUEST_LOGIN) {
            if (resultCode == -1) {
//                Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);
//                Tencent.handleResultData(data, loginListener);

                Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);
                Tencent.handleResultData(data, loginListener);
                UserInfo info = new UserInfo( getContext(), mTencent.getQQToken());
                info.getUserInfo(userInfoListener);
            }
        }
    }
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值