1. 程式人生 > >Android 微信授權登入、獲取Wx使用者資訊,解決無法回撥問題

Android 微信授權登入、獲取Wx使用者資訊,解決無法回撥問題

微信授權登入,官方說的不是很清楚、所以導致有一部分的坑。

據此記載..(坑)

1.微信註冊應用平臺的應用簽名為 打包keystore的MD5 小寫並且去掉 ":" 號組成、或者去下載 微信簽名生成工具 輸入專案的packageName也可以檢視到。

2.授權沒反應,監測微信App_Id是否正確、是否按照上1.生成。 當前的App是否正式簽名?也就是正式App.. DeBug簽名環境的App貌似無法調動微信。 

3.關於回撥:是否按照官方要求註冊WXEntryActivity並且繼承Acticiy、 此Activity不能改名,並且在你的 package(專案報名).wxapi.WXEntryActivity.java 下面。 註冊* 每段程式碼都別少...

<!--註冊微信回撥 WXEntryActivity -->
<activity
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使用者資訊,簡單三部曲:

* 
* 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;
}


參考、感謝:

相關推薦

Android 授權登入獲取Wx使用者資訊解決無法問題

微信授權登入,官方說的不是很清楚、所以導致有一部分的坑。 據此記載..(坑) 1.微信註冊應用平臺的應用簽名為 打包keystore的MD5 小寫並且去掉 ":" 號組成、或者去下載 微信簽名生成工具 輸入專案的packageName也可以檢視到。 2.授權沒反應,監測微信

Android 授權登入獲取個人資訊

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.co

12授權登入和拉取使用者資訊

注:在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名。請注意,這裡填寫的是域名(是一個字串),而不是URL,因此請勿加 htt

qq授權登入授權登入授權登入

微信授權登入 1)  微信授權登入相對比較麻煩,你需要到微信公眾平臺去拿到appid、appsecret進行配置; 微信授權有兩種:一種是微信直接授權登入,另外著一種是在該網站你有自己的賬號體系,需要和微信進行繫結;第一種就是下面程式碼出現的;第二種需要得到網站的資料庫,進

Vue授權登入前後端分離較為優雅的解決方案

微信授權登入是一個非常常見的場景,利用微信授權登入,我們可以很容易獲取使用者的一些資訊,通過使用者對公眾號的唯一openid從而建立資料庫繫結使用者身份. 微信授權登入的機制這裡不做詳述,微信官方文件已有詳述,簡述就是通過跳轉微信授權的頁面,使用者點選確認後

授權登入獲取資訊儲存!

微信授權登入後,把獲取的資訊儲存到本地資料庫中 <?php namespace Home\Controller; use Think\Controller; class YiMuDiController extends Controller { /** * 構造方法

網站獲取授權登入功能

首先需要弄明白的是你是在微信服務號裡面開發的網站還是獨立的網站應用,獨立的網站獲取微信登入功能需要滿足以下條件: 1.申請微信開發者賬號 2.在微信開發者平臺管理中心申請網站應用,如下圖所示(注意正確填寫授權回撥域): 3.申請通過後會獲得該網站對應的appid以及app

Android授權登入分享全解析

前言 在移動網際網路浪潮中,聯網APP已經把單機拍死在沙灘上,很多公司都希望自家應用能夠有一套帳號系統,可是許多使用者卻並不一定買賬:我憑啥註冊你家應用的帳號?微博,微信,QQ幾乎成了每個人手機中的必裝應用,於是微信,微博,QQ說了:來來來,你們都可以用我家的

PHP 授權登入獲取使用者資訊

//呼叫微信授權登入(微信公眾平臺)         public function add_user(){             //獲取微信公眾號的APPID             $app_id  = '';             //請求介面回撥地址     

Android接入微SDK之一:發起授權登入

public class WXEntryActivity extends Activity implements IWXAPIEventHandler { @Override public void onCreate(Bundle savedInstanceState) {

vue+vue-cookie 授權登入

      基本實現思路是: 無論使用哪個url進入網站都會先觸發router.beforeEach鉤子 在router.beforeEach鉤子中判斷使用者當前登入狀態 若沒有登入則儲存使用者進入的url並跳轉到login授權頁面

授權登入及儲存使用者資訊(fastadmin開發專案)

最近做了一個微信投票系統,這是第一次開發微信專案,所以特此記錄一下 微信投票系統,最優先想到的就是授權登入,以及獲取使用者資訊 1.首先需要申請微信公眾號(此次使用的是服務號) 2.在微信公眾平臺基本配

公眾平臺開發——授權登入(OAuth2.0)

1、OAuth2.0簡介   OAuth(開放授權)是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。   允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存放在特

開發之網站授權登入-C#

一、前言 網站微信授權登入的準備工作:官方介面文件  ,微信服務號(怎麼註冊我就不提了),準備工作做好了過後,梳理流程,切勿愣頭青,先把流程梳理好,才好帶入業務 注意:如果沒有認證的服務號,可以用測試賬號,測試賬號預設支援100個關注的微訊號。 官方文案:  網

授權登入-前後端分離

簡介 在前後端分離情況下實現微信服務號和訂閱號授權登入,專案使用springboot+Vue前後端分離的開發模式。 備註:目前只提供後端程式碼實現以及業務邏輯 流程圖 服務號 開發邏輯 進入活動頁面根據code和state引數判斷,如

小程式 - 授權登入 & 授權繫結手機號

使用者在使用小程式時,經常需要授權登入,授權登入的作用是獲取使用者的基本資訊,如頭像、暱稱以及openid等,openid可用於微信授權手機號、微信支付。 微信授權登入 .xhtml如下,wxLogin為自定義方法 <button open-type="getUserInfo" b

騰訊MSDK手Q授權登入

其實MSDK WIKI講的很詳細,這裡就只挑重點了 名詞解釋 名稱 名詞概述 平臺 微信,手Q統稱平臺 openId 使用者授權後平臺返回的唯一標識 accessToken 使用者授權票據, 獲取此票據以後可以認為使用者已經授權, 分享/支付等功能需要

APP呼叫授權登入之服務端開發

一直在做微信支付 微信授權登入這塊的APP介面 現在提供一個寫好的微信授權service類給大家參考 import com.pojo.wechat.UserInfoData; import com.utils.ConfigUtil; import com.uti

JAVA實現授權登入

1.先寫一個工具類 AuthUtil.java 來存放APPID等資訊 public class AuthUtil { public static final String APPID = "換成自己的APPID "; public static final Strin

java 授權登入

可以自行查詢文件-微信開放平臺https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&