QQ 第三方登录

来源:互联网 发布:淘宝标题优化技巧步骤 编辑:程序博客网 时间:2024/05/16 14:46

  先加载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);            }        }    }}