編輯:關於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 微信登錄分享朋友圈的功能,有需要的朋友可以看下。
ContentProvider:內容提供者ContentProvider簡介:當應用繼承ContentProvider類,並重寫該類用於提供數據和存儲數據的方法,就可以向
一、第一種錯誤:錯誤日志大體是這樣:The project is using an unsupported version of the Android Gradle p
Volley框架的學習馬上就可以“殺青”了,哈哈,有木有點小激動呢,之所以將這個框架分成三篇來寫,而且涉及的細節比較多,是因為考慮到後面還要學習
了解Android繪圖或者自定義View的同學,都知道Canvas類、Paint類等。今天就來看看Paint的有關描述。首先看看官網的定義:The Paint class