騰訊QQ第三者登録の実現


テンセントのオープンプラットフォームのトップページ


SDKダウンロードセンター

  • まずManifestsに必要な権限
  • を見てください.
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  • 登録が必要な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="tencent222222" />
        </intent-filter>
    </activity>
    <activity  android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
  • ここで使用されているKEYはテンセントのデフォルトテストの222222
  • です.
    // tencent 
    tencent = Tencent.createInstance(KEY, getApplicationContext());
    
    /** *  ,  */
    tencent.login(MainActivity.this, "all", listener);

    ここで取得したのはテンセントが返した唯一の標識(openID、accessTokenなど)

    // 
    private IUiListener listener = new IUiListener() {
        @Override
        public void onComplete(Object response) {
            try {
                JSONObject object = new JSONObject(response + "");
                int ret = object.getInt("ret");
                if (ret == 0) {
                    Toast.makeText(MainActivity.this, " ", Toast.LENGTH_LONG).show();
                    String openID = object.getString("openid");
                    String accessToken = object.getString("access_token");
                    String expires = object.getString("expires_in");
                    tencent.setOpenId(openID);
                    tencent.setAccessToken(accessToken, expires);
                    /** *  ,  */
                    UserInfo userInfo = new UserInfo(MainActivity.this, tencent.getQQToken());
                    userInfo.getUserInfo(new MyIUiListener());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onError(UiError uiError) {
        }
        @Override
        public void onCancel() {
        }
    };

    次に、ユーザーの基本情報を取得します。

    private class MyIUiListener implements IUiListener {
        @Override
        public void onComplete(Object obj) {
            try {
                JSONObject object = new JSONObject(obj + "");
                String ret = object.getString("ret");
                String is_lost = object.getString("is_lost");
                String nickname = object.getString("nickname");
                String gender = object.getString("gender");
                String province = object.getString("province");
                String city = object.getString("city");
                /** * ,  */
                final String figureurl_qq_2 = object.getString("figureurl_qq_2");
                nickName.setText(nickname);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Bitmap bitmap = MyUtil.downLoadImage(figureurl_qq_2);
                        Message message = new Message();
                        message.obj = bitmap;
                        handler.sendMessage(message);
                    }
                }).start();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onError(UiError uiError) {
        }
        @Override
        public void onCancel() {
        }
    }

    次に共有機能を呼び出します

    private void createShare() {
        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, "a_zhon");
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY, " QQ");
        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://blog.csdn.net/a_zhon");
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png");
        tencent.shareToQQ(MainActivity.this, params, shareListener);
    }

    またonActivity Resultメソッドを書き換える必要があります。そうしないとユーザー情報が得られません(書き直さなくてもユーザー情報が得られるようですが、興味のある子供靴は自分で試してみてください)

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        //QQ 
        if (requestCode == Constants.REQUEST_LOGIN) {
            Tencent.onActivityResultData(requestCode, resultCode, data, listener);
        }

    必要なものがあれば、Demoをダウンロードしてください。


    OK大功を成し遂げて、それから退勤して家に帰ってご飯を食べました。。