Android 위챗 인증 로그인, Wx 사용자 정보 액세스, 콜백 불가 문제 해결

12802 단어 Android
위챗이 로그인을 허가받았는데 정부에서 잘 몰라서 일부 구덩이가 생겼다.
이에 의하면...(구덩이)
1. 위챗 등록 앱 플랫폼의 앱 서명은 키스토어의 MD5 소문자로 포장하고':'번호로 구성된 것을 제거하거나 위챗 서명 생성 도구 입력 항목을 다운로드하는 패키지Name도 볼 수 있다.
2. 권한 수여 반응이 없음, 위챗 App 모니터링Id가 올바른지, 위 1을 누르는지 여부생성현재 App이 공식적으로 서명되어 있습니까?바로 공식 에이프.DeBug 서명 환경의 App은 위챗을 이동할 수 없을 것 같다. 
3. 리셋에 관한: 공식 요구에 따라 WXEntryActivity를 등록하고 Acticiy를 계승하는지, 이Activity는 이름을 바꿀 수 없으며, 당신의 패키지(프로젝트 신청)에 등록할 수 없습니다.wxapi.WXEntryActivity.자바 아래.등록* 각 섹션의 코드를 줄이지 마십시오.

    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:label="@string/app_name"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.Translucent" />

4. 콜백 방법 onResp() 방법이 콜백을 트리거하지 않았습니다. WXEntryActivity onCreate에서 이 방법 mApi가 호출되었는지 모니터링하십시오.handleIntent(this.getIntent(), this);
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

    private final String TAG = this.getClass().getSimpleName();
    public static final String APP_ID = "     ";
    public static final String APP_SECRET = "     ";
    private IWXAPI mApi;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mApi = WXAPIFactory.createWXAPI(this, APP_ID, true);
        mApi.handleIntent(this.getIntent(), this);
    }

    //           onReq  
    @Override
    public void onReq(BaseReq baseReq) {
    }

    //            
    @Override
    public void onResp(BaseResp resp) {
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                //    
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                //    
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                //     
                break;
            default:
                //    
                break;
        }
        finish();

    }

}
5.권한 수여 시 입장
WXEntryActivity, 현재 배경은 검은색이나 흰색일 수 있습니다. 사용자 체험에 영향을 주지 않기 위해 현재Activity를 투명하게 설정할 수 있습니다.
android
:theme=
"@android:style/Theme.Translucent"는 위 3을 참조할 수 있습니다.WXEntryActivity 등록 형식입니다.
이상은 권한 수여 로그인이 만나는 구덩이, Wx가 요구하는 양식만 탓하는 개성이 있고 많든 적든 이런 구덩이를 만날 수 있다.
Wx 사용자 정보에 대한 로그인 권한을 부여하고 간단한 3부작:
* 
* 1.sendReq(req).          code
* 
* 2. code.  Wx     openid & accessToken
* 
* 3.  openid & accessToken              
*
* 

구체적으로 참고 가능: 위챗 권한 수여 로그인으로 사용자 정보를 얻는 절차
부분 코드:
/**
 *   openid accessToken       
 *
 * @param code    
 */
private void getAccess_token(final String code) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                    + APP_ID
                    + "&secret="
                    + APP_SECRET
                    + "&code="
                    + code
                    + "&grant_type=authorization_code";
            try {
                JSONObject jsonObject = JsonUtils.initSSLWithHttpClinet(path);//   https     json  
                if (null != jsonObject) {
                    String openid = jsonObject.getString("openid").toString().trim();
                    String access_token = jsonObject.getString("access_token").toString().trim();
                    getUserMesg(access_token, openid);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();

}


/**
 *          
 *
 * @param access_token
 * @param openid
 */
private void getUserMesg(final String access_token, final String openid) {
    String path = "https://api.weixin.qq.com/sns/userinfo?access_token="
            + access_token
            + "&openid="
            + openid;
    try {
        JSONObject jsonObject = JsonUtils.initSSLWithHttpClinet(path);//   https     json  
        if (null != jsonObject) {
            String nickname = jsonObject.getString("nickname");
            int sex = Integer.parseInt(jsonObject.get("sex").toString());
            String headimgurl = jsonObject.getString("headimgurl");

            Log.e(TAG, "getUserMesg      Wx    .. nickname:" + nickname);

        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return;
}


구체적인 코드: 위챗 인증 로그인 - 사례 Dome.
참조, 감사:
1.http://blog.csdn.net/xiong_it/article/details/48317527   
2.https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN

좋은 웹페이지 즐겨찾기