1.首先我們應該先去微信開放平臺(https://open.weixin.qq.com)填寫應用資訊,提交審核
2.審核完成微信開放平臺會生成一個appid,和sercet,拿到之后請妥善保管
- 按照微信開放平臺給的檔案,下載相應的sdk以及簽名工具,在此強調 必須是用簽名打包的正式版的apk才可以調起微信的客戶端進行授權登錄,必須保證應用的簽名(用簽名工具可以獲取)和開放平臺上填寫的資訊一致,
4.開始代碼模塊
在app級別的build.gradle里面添加依賴
//微信
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
android{
defaultConfig{
//微信登陸
signingConfigs {
release {
storeFile file('health.keystore')
keyAlias "health"
storePassword "123456"
keyPassword "123456"
}
debug {
storeFile file('health.keystore')
keyAlias "health"
storePassword "123456"
keyPassword "123456"
}
}
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
5.建一個包 名字叫wxapi(必須一致) 在這個包里創建一個類,WXEntryActivity(一致)
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private static final int RETURN_MSG_TYPE_LOGIN = 1;
private String code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrescoApp.mWxApi.handleIntent(getIntent(),this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
//登錄回呼
switch (baseResp.errCode){
case BaseResp.ErrCode.ERR_OK:
switch (baseResp.getType()){
case RETURN_MSG_TYPE_LOGIN:
//拿到了微信回傳的code,立馬再去請求access_token
code = ((SendAuth.Resp)baseResp).code;
if (TextUtils.isEmpty(code)){
code =getIntent().getStringExtra("_wxapi_sendauth_resp_token");
}
Log.i("wx_code", code);
//Toast.makeText(this, "登陸成功", Toast.LENGTH_SHORT).show();
//就在這個地方,用網路庫什么的或者自己封的網路api,發請求去咯,注意是get請求
Intent intent = new Intent(this, LoginActivity.class);
intent.putExtra("code",code);
startActivity(intent);
finish();
break;
}
break;
}
}
}
6.在AndroidManifest.xml注冊:
<activity android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="wxe3fcbe8a55cd33ff" />
</intent-filter>
</activity>
7.在App里面 //別忘了在清單檔案里面也初始化App
public class FrescoApp extends Application {
public static FrescoApp context;
public static IWXAPI mWxApi;
@Override
public void onCreate() {
super.onCreate();
context = this;
Fresco.initialize(this);
registerTowX();
}
private void registerTowX() {
//AppConst.WEIXIN.APP_ID是指你應用在微信開放平臺上的AppID,記得替換,
mWxApi = WXAPIFactory.createWXAPI(this, "wxe3fcbe8a55cd33ff", true);
// 將該app注冊到微信
mWxApi.registerApp("wxe3fcbe8a55cd33ff");
}
//app
public static FrescoApp getApp(){
return context;
}
}
8.一定別忘了拿到傳過來的code值
public class LoginActivity extends AppCompatActivity {
private Imageview wechat_pay;
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
wechat_pay = findViewById(wechat_pay);
//微信登陸
wechat_pay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!FrescoApp.mWxApi.isWXAppInstalled()){
Toast.makeText(LoginActivity.this, "您還未安裝微信客戶端", Toast.LENGTH_SHORT).show();
return;
}
final SendAuth.Req req = new SendAuth.Req();
req.scope="snsapi_userinfo";
req.state="diandi_wx_login";
FrescoApp.mWxApi.sendReq(req);
Intent intent = getIntent();
String code = intent.getStringExtra("code");
RetrofitUtils.getInstance().getWechatlogin(code, new Observer<WeChatLoginBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(WeChatLoginBean value) {
if (value.getStatus().equals("0000")){
Toast.makeText(LoginActivity.this, value.getMessage(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, Login2Activity.class);
startActivity(intent);
finish();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
});
}
}
寫到這,微信登陸就完成了!!!!
最后 喜歡的話 就點個贊吧!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/245246.html
標籤:其他
