Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 實現微信登錄詳解

Android 實現微信登錄詳解

編輯:關於Android編程

前言

 分享到微信朋友圈的功能早已經有了,但微信登錄推出並不久,文檔寫的也並不是很清楚,這裡記錄分享一下。

 正文

 一、准備

  注冊、認證步驟自己來。微信開放平台:https://open.weixin.qq.com

 二、 代碼

  2.1 喚起微信登錄

   參考官網文檔:資源中心/移動應用開放/接入指南/Android接入指南

private IWXAPI mWeixinAPI;

  private void loginWithWeixin() {
    if (mWeixinAPI == null) {
      mWeixinAPI = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, false);
    }

    if (!mWeixinAPI.isWXAppInstalled()) {
      //提醒用戶沒有按照微信
      return;
    }

    mWeixinAPI.registerApp(WEIXIN_APP_ID);

    SendAuth.Req req = new SendAuth.Req();
    req.scope = WEIXIN_SCOPE;
    req.state = WEIXIN_STATE;
    mWeixinAPI.sendReq(req);
  }

WEXIN_SCOPE :這裡填的snsapi_userinfo,用snsapi_base提示沒權限。

WEIXIN_STATE :用於保持請求和回調的狀態,授權請求後原樣帶回給第三方。該參數可用於防止csrf攻擊(跨站請求偽造攻擊),建議第三方帶上該參數,可設置為簡單的隨機數加session進行校驗。

不出意外就能喚起微信登錄了。

  2.2 接收微信的請求及返回值

在你的包名相應目錄下新建一個wxapi目錄,並在該wxapi目錄下新增一個WXEntryActivity類,參考文檔在AndroidManifest.xml注冊Activity。

public class WXEntryActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    handleIntent(getIntent());
  }

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleIntent(intent);
  }

  private void handleIntent(Intent intent) {
    SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());
    if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
      //用戶同意
    }
  }
}

注意:這裡和微信的例子寫的有點不一樣,不過結果是一樣的,這個能取到code等信息,測試返回數據如下:

 E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_state xxx
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    E/WXEntryActivity(14288): onCreate...key:_mmessage_appPackage com.tencent.mm
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_transaction null
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_lang zh_CN
    E/WXEntryActivity(14288): onCreate...key:_wxapi_command_type 1
    E/WXEntryActivity(14288): onCreate...key:_mmessage_content null
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_country null
    E/WXEntryActivity(14288): onCreate...key:_mmessage_checksum [B@426358e8
    E/WXEntryActivity(14288): onCreate...key:wx_token_key com.tencent.mm.openapi.token
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx
    E/WXEntryActivity(14288): onCreate...key:_mmessage_sdkVersion 570490883
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errcode 0
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errstr null
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_openId null

 xxx     部分的內容我已經隱掉了,拿到code就能拿到access——token了,後續依據文檔調用即可。

   這裡你可以把WXEntryActivity的theme弄成透明的,然後再彈起來一個ProgressDialog進行後續的操作(提交你自己的服務器),就能和現有的界面完全融合了。

 三、注意:

  3.1 獲取簽名必須用release包。(所以你會發現微信、微博SDK取得值是一樣,所以如果已經有了微博的簽名可以直接拷貝到微信使用)

以上對Android 微信登錄分享朋友圈的功能,有需要的朋友可以看下。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved