常用微信集積(サードパーティsdk集積キット)--微信登録

5662 ワード

序文
プログラム開発の過程では、サードパーティsdkが使用されます.ここでは、一般的なsdkの使用方法を説明するために、一般的なログイン、共有、支払いについて統合方法の総説を行います.一般的に、sdkはログイン、共有、支払いにおいて、次のような流れで行われます.
    (req)-->      -->      

このように言えば非常に一般的であるが,大まかな流れはそうであるが,それぞれのsdkがこの過程で実現する方法に差がある可能性がある.したがって,サードパーティsdkを統合することは,特に難しくない.
ログイン
(1). ログイン開始
サードパーティログインは、通常、サードパーティのクライアントに先にログインし、このステップでユーザログインデータを取得し、取得したログイン情報でコストAppのログインデータをカプセル化し、本クライアントのログインインタフェースApiに送信してログインを実現する.具体的には以下の通りです.
    /** 1.       */
    public void loginStart(Context context) {
       MessageManager.showProgressDialog((Activity) context, "     ...");
        SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "wechat_sdk_demo_test";

        IWXAPI iwxapi = WXAPIFactory.createWXAPI(context, Constants.WX.APP_ID, true);
        iwxapi.registerApp(FirstPageConstants.WX.APP_ID);
        iwxapi.sendReq(req);
    }

この方法は,微信登録を開始したActivityで呼び出され,微信登録が開始されたことを示す.微信登録は,データ返却処理において本質的にWXEntryActivityのOnActivity Resultによって処理されるが,sdkはこのフローをカプセル化している.
(2). ログイン戻り結果処理
微信の結果を得るには、Appコードルートディレクトリの下でwxapiパッケージを構築し、その中でWXEntryActivityを作成し、IWXAPIEventHandlerインタフェースを実現する必要があります.このインタフェースはonRespとonReqの2つの方法を提供して結果処理を行う.私たちがしなければならないのは、結果が戻ったときに、このonRespメソッドを呼び出すように微信に通知することです.先ほどもお話ししましたが、WeChatによるログインリクエストの処理はOnActivity Resultによるものです.ここには
    /** 2.           */
    @Override
    protected void onNewIntent(Intent intent) {   
        super.onNewIntent(intent);
        setIntent(intent);
        mWechatApi.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    }

    @Override
    public void onResp(BaseResp resp) {          
        handleLoginResponse(resp);
    }

以上のように操作した後,WXEntryActivityのonRespで必要な微信登録戻り結果を得た.ここでは,カスタムhandleLoginResponseメソッドで処理した.
 /**            */
    private void handleLoginResponse(BaseResp resp) {
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                loginByWX(((SendAuth.Resp) resp).code);
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                MessageManager.closeProgressDialog();
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED: {
                MessageManager.showDialog((Activity) context, 0, "    ", "    ,      !", null, false);
            }
            break;
        }
    }

(3). Appを呼び出すログインプロセス
データがそろって検出されると、Appのログインプロセスを安全に呼び出すことができます.
  /** 3.    :    ,        App */
    private void loginByWX(final String code) {
        new AsyncTask() {

            @Override
            protected WXUsersInfo doInBackground(Integer... params) {
                MessageManager.showProgressDialog((Activity) context, "   ...");
                WXTokenInfo token = mLoginRepository.getWechatToken(code);
                WXUsersInfo muser = mLoginRepository.getWeChatUserInfo(token);
                return muser;
            }

            @Override
            protected void onPostExecute(WXUsersInfo result) {
                super.onPostExecute(result);
                dealLoginResult(result);
            }

        }.execute();
    }

ここでは、私のApp内ログインロジックはdealLoginResultメソッドで実現されています.Appごとにログインプロセスが異なるので、ここでは書きません.しかし、微信のログインプロセスは、ここまではすでに終わっており、残りの部分は本質的にAndroidプログラマーが自分で処理している(データは何でもあり、プロセスもカプセル化されており、表はあなたができないことを教えてくれている).