Android手机客户端使用QQ登录

查看http://wiki.connect.qq.com/中的Android应用接入API

下载jar包(open_sdk.jar,mta-sdk-1.0.0.jar)

在Android项目中 AndroidManifest.xml

  <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="tencent22222" />  <!--此处修改为自己注册的项目APP ID

            </intent-filter>

        </activity>

在主程序中 MainActivity.java

    private QQAuth mQQAuth;

    public static Context appContext;

    private Button mNewLoginButton;

    private String mAppid="22222";

    private UserInfo mInfo;

   private TextView mUserInfo;

   private ImageView mUserLogo;

   

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

       appContext = getApplicationContext();

       mQQAuth = QQAuth.createInstance("22222", this);

       mUserInfo = (TextView) findViewById(R.id.user_nickname);

       mUserLogo = (ImageView) findViewById(R.id.user_logo);

       mNewLoginButton = (Button) findViewById(R.id.login1);

       mNewLoginButton.setOnClickListener(new OnClickListener() {

         @Override

         public void onClick(View v) {

            new Thread(new Runnable() {

                public void run() {

                   IUiListener listener = new BaseUiListener() {

                      @Override

                      protected void doComplete(JSONObject values) {

                         updateUserInfo();

                         updateLoginButton();

                         System.out.println(mQQAuth.getQQToken().getOpenId());

                      }

                   };

                   mQQAuth = QQAuth.createInstance(mAppid, MainActivity.appContext);

                   mQQAuth.login(MainActivity.this, "all", listener);

                }

            }).start();

         }

      });      

    }

  private class BaseUiListener implements IUiListener {

      @Override

      public void onComplete(Object response) {

         Util.showResultDialog(MainActivity.this, response.toString(), "登录成功");

         doComplete((JSONObject)response);

      }

      protected void doComplete(JSONObject values) {

         System.out.println(values);

      }

      @Override

      public void onError(UiError e) {

         Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);

         Util.dismissDialog();

      }

      @Override

      public void onCancel() {

         Util.toastMessage(MainActivity.this, "onCancel: ");

         Util.dismissDialog();

      }

   }

private void updateUserInfo() {

      if (mQQAuth != null && mQQAuth.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;

                msg.what = 0;

                mHandler.sendMessage(msg);

                new Thread(){

                   @Override

                   public void run() {

                      JSONObject json = (JSONObject)response;

                      if(json.has("figureurl")){

                         Bitmap bitmap = null;

                         try {

                            bitmap = Util.getbitmap(json.getString("figureurl_qq_2"));

                         } catch (JSONException e) {

                         }

                         Message msg = new Message();

                         msg.obj = bitmap;

                         msg.what = 1;

                         mHandler.sendMessage(msg);

                      }

                   }

                }.start();

            }

            @Override

            public void onCancel() {

            }

         };

         mInfo = new UserInfo(this, mQQAuth.getQQToken());

         mInfo.getUserInfo(listener);

      } else {

         mUserInfo.setText("");

         mUserInfo.setVisibility(android.view.View.GONE);

         mUserLogo.setVisibility(android.view.View.GONE);

      }

   }

 

   Handler mHandler = new Handler() {

      @Override

      public void handleMessage(Message msg) {

         if (msg.what == 0) {

            JSONObject response = (JSONObject) msg.obj;

            if (response.has("nickname")) {

                try {

                   mUserInfo.setVisibility(android.view.View.VISIBLE);

                   mUserInfo.setText(response.getString("nickname"));

                } catch (JSONException e) {

                   // TODO Auto-generated catch block

                   e.printStackTrace();

                }

            }

         }else if(msg.what == 1){

            Bitmap bitmap = (Bitmap)msg.obj;

            mUserLogo.setImageBitmap(bitmap);

            mUserLogo.setVisibility(android.view.View.VISIBLE);

         }

      }

   };

一般QQ账号绑定用户是通过每个QQ号获得的唯一openid连接的(mQQAuth.getQQToken().getOpenId())

 

 

 

 

 

 

 

 

posted @ 2014-03-13 13:51  风语9  阅读(725)  评论(0编辑  收藏  举报