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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.