Android 實現微信登入詳解_Android

來源:互聯網
上載者:User

前言

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

 本文

 一、準備

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

 二、 代碼

  2.1 喚起微信登入

   參考官網文檔:資源中心/行動裝置 App開放/接入指南/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 微信登入分享朋友圈的功能,有需要的朋友可以看下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.