100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android微信登录QQ登录微博登录微信分享QQ分享微博分享

android微信登录QQ登录微博登录微信分享QQ分享微博分享

时间:2024-06-26 13:59:43

相关推荐

android微信登录QQ登录微博登录微信分享QQ分享微博分享

android微信登录QQ登录微博登录微信分享QQ分享微博分享

微信登录:

package com.vincent.cloud.ui;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ImageView;import com.bumptech.glide.Glide;import com.tencent.mm.opensdk.modelmsg.SendAuth;import com.tencent.mm.opensdk.openapi.IWXAPI;import com.tencent.mm.opensdk.openapi.WXAPIFactory;import com.vincent.cloud.R;import com.vincent.cloud.base.App;import com.vincent.cloud.base.Config;import com.vise.log.ViseLog;/*** @name Login* @class name:com.vincent.cloud* @class describe* @anthor Vincent* @time /7/19 10:34* @change* @chang time* @class describe*/public class WXLoginActivity extends AppCompatActivity {public static void actionStart(Activity activity){Intent intent = new Intent(activity,WXLoginActivity.class);activity.startActivity(intent);}private ImageView ivHead;/*** 微信登录相关*/private IWXAPI api;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wx_login);ivHead = (ImageView)findViewById(R.id.iv_wx_head);//通过WXAPIFactory工厂获取IWXApI的示例api = WXAPIFactory.createWXAPI(this, Config.APP_ID_WX,true);//将应用的appid注册到微信api.registerApp(Config.APP_ID_WX);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {SendAuth.Req req = new SendAuth.Req();req.scope = "snsapi_userinfo";//req.scope = "snsapi_login";//提示 scope参数错误,或者没有scope权限req.state = "wechat_sdk_微信登录";api.sendReq(req);}});}@Overrideprotected void onResume() {super.onResume();Glide.with(WXLoginActivity.this).load(App.getShared().getString("headUrl","")).into(ivHead);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(resultCode == 0){String headUrl = data.getStringExtra("headUrl");ViseLog.d("url:"+headUrl);Glide.with(WXLoginActivity.this).load(headUrl).into(ivHead);}super.onActivityResult(requestCode, resultCode, data);}}package com.vincent.cloud.wxapi;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;import com.alibaba.fastjson.JSON;import com.tencent.mm.opensdk.modelbase.BaseReq;import com.tencent.mm.opensdk.modelbase.BaseResp;import com.tencent.mm.opensdk.openapi.IWXAPI;import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;import com.tencent.mm.opensdk.openapi.WXAPIFactory;import com.vincent.cloud.base.App;import com.vincent.cloud.base.Config;import com.vincent.cloud.entity.WXAccessTokenEntity;import com.vincent.cloud.entity.WXBaseRespEntity;import com.vincent.cloud.entity.WXUserInfo;import com.vise.log.ViseLog;import com.zhy.http.okhttp.OkHttpUtils;import com.zhy.http.okhttp.callback.StringCallback;/*** description :* project name:CCloud* author : Vincent* creation date: /6/9 18:13** @version 1.0*/public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler{/*** 微信登录相关*/private IWXAPI api;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//通过WXAPIFactory工厂获取IWXApI的示例api = WXAPIFactory.createWXAPI(this, Config.APP_ID_WX,true);//将应用的appid注册到微信api.registerApp(Config.APP_ID_WX);ViseLog.d("------------------------------------");//注意://第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑try {boolean result = api.handleIntent(getIntent(), this);if(!result){ViseLog.d("参数不合法,未被SDK处理,退出");finish();}} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);api.handleIntent(data,this);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);finish();}@Overridepublic void onReq(BaseReq baseReq) {ViseLog.d("baseReq:"+ JSON.toJSONString(baseReq));}@Overridepublic void onResp(BaseResp baseResp) {ViseLog.d("baseResp:--A"+JSON.toJSONString(baseResp));ViseLog.d("baseResp--B:"+baseResp.errStr+","+baseResp.openId+","+baseResp.transaction+","+baseResp.errCode);WXBaseRespEntity entity = JSON.parseObject(JSON.toJSONString(baseResp),WXBaseRespEntity.class);String result = "";switch(baseResp.errCode) {case BaseResp.ErrCode.ERR_OK:result ="发送成功";//showDialog("正在获取个人资料..");//现在请求获取数据 access_token https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code//showMsg(1,result);/*Call call = RetrofitUtils.getApiService("https://api./").getWeiXinAccessToken(Config.APP_ID_WX,Config.APP_SECRET_WX,entity.getCode(),"authorization_code");call.enqueue(new Callback() {@Overridepublic void onResponse(Call call, Response response) {ViseLog.d("response:"+JSON.toJSONString(response));}@Overridepublic void onFailure(Call call, Throwable t) {closeDialog();}});*/OkHttpUtils.get().url("https://api./sns/oauth2/access_token").addParams("appid",Config.APP_ID_WX).addParams("secret",Config.APP_SECRET_WX).addParams("code",entity.getCode()).addParams("grant_type","authorization_code").build().execute(new StringCallback() {@Overridepublic void onError(okhttp3.Call call, Exception e, int id) {ViseLog.d("请求错误..");}@Overridepublic void onResponse(String response, int id) {ViseLog.d("response:"+response);WXAccessTokenEntity accessTokenEntity = JSON.parseObject(response,WXAccessTokenEntity.class);if(accessTokenEntity!=null){getUserInfo(accessTokenEntity);}else {ViseLog.d("获取失败");}}});break;case BaseResp.ErrCode.ERR_USER_CANCEL:result = "发送取消";ViseLog.d("发送取消");finish();break;case BaseResp.ErrCode.ERR_AUTH_DENIED:result = "发送被拒绝";ViseLog.d("发送被拒绝");finish();break;case BaseResp.ErrCode.ERR_BAN:result = "签名错误";ViseLog.d("签名错误");break;default:result = "发送返回";//showMsg(0,result);finish();break;}Toast.makeText(WXEntryActivity.this,result,Toast.LENGTH_LONG).show();}/*** 获取个人信息* @param accessTokenEntity*/private void getUserInfo(WXAccessTokenEntity accessTokenEntity) {//https://api./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENIDOkHttpUtils.get().url("https://api./sns/userinfo").addParams("access_token",accessTokenEntity.getAccess_token()).addParams("openid",accessTokenEntity.getOpenid())//openid:授权用户唯一标识.build().execute(new StringCallback() {@Overridepublic void onError(okhttp3.Call call, Exception e, int id) {ViseLog.d("获取错误..");}@Overridepublic void onResponse(String response, int id) {ViseLog.d("userInfo:"+response);WXUserInfo wxResponse = JSON.parseObject(response,WXUserInfo.class);ViseLog.d("微信登录资料已获取,后续未完成");String headUrl = wxResponse.getHeadimgurl();ViseLog.d("头像Url:"+headUrl);App.getShared().putString("headUrl",headUrl);Intent intent = getIntent();intent.putExtra("headUrl",headUrl);WXEntryActivity.this.setResult(0,intent);finish();}});}}QQ登录:package com.vincent.cloud.ui;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.text.TextUtils;import android.view.View;import android.widget.ImageView;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.bumptech.glide.Glide;import com.tencent.connect.UserInfo;import com.mon.Constants;import com.tencent.tauth.IUiListener;import com.tencent.tauth.Tencent;import com.tencent.tauth.UiError;import com.vincent.cloud.R;import com.vincent.cloud.base.Config;import com.vincent.cloud.entity.QQUser;import com.vise.log.ViseLog;import org.json.JSONException;/*** @name Login* @class name:com.vincent.cloud* @class describe* @anthor Vincent* @time /7/19 10:34* @change* @chang time* @class describe*/public class QQLoginActivity extends AppCompatActivity {private Tencent mTencent;private UserInfo userInfo;private BaseUiListener listener = new BaseUiListener();private String QQ_uid;//qq_openidprivate ImageView ivHead;public static void actionStart(Activity activity){Intent intent = new Intent(activity,QQLoginActivity.class);activity.startActivity(intent);}@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_qq_login);ivHead = (ImageView)findViewById(R.id.iv);// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。// 其中APP_ID是分配给第三方应用的appid,类型为String。mTencent = Tencent.createInstance(Config.QQ_LOGIN_APP_ID, this.getApplicationContext());findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ViseLog.d("开始QQ登录..");if (!mTencent.isSessionValid()){//注销登录 mTencent.logout(this);mTencent.login(QQLoginActivity.this, "all", listener);}}});}private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {if (msg.what == 0) {JSONObject response = JSONObject.parseObject(String.valueOf(msg.obj));ViseLog.d("UserInfo:"+ JSON.toJSONString(response));QQUser user=JSONObject.parseObject(response.toJSONString(),QQUser.class);if (user!=null) {ViseLog.d("userInfo:昵称:"+user.getNickname()+" 性别:"+user.getGender()+" 地址:"+user.getProvince()+user.getCity());ViseLog.d("头像路径:"+user.getFigureurl_qq_2());Glide.with(QQLoginActivity.this).load(user.getFigureurl_qq_2()).into(ivHead);}}}};@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {Tencent.onActivityResultData(requestCode,resultCode,data,new BaseUiListener());}class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object o) {ViseLog.d("授权:"+o.toString());try {org.json.JSONObject jsonObject = new org.json.JSONObject(o.toString());initOpenidAndToken(jsonObject);updateUserInfo();} catch (JSONException e) {e.printStackTrace();}}@Overridepublic void onError(UiError e) {ViseLog.d("onError:code:" + e.errorCode + ", msg:"+ e.errorMessage + ", detail:" + e.errorDetail);}@Overridepublic void onCancel() {ViseLog.d("onCancel");}}/*** 获取登录QQ腾讯平台的权限信息(用于访问QQ用户信息)* @param jsonObject*/public void initOpenidAndToken(org.json.JSONObject jsonObject) {try {String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires);mTencent.setOpenId(openId);QQ_uid = openId;}} catch(Exception e) {}}private void updateUserInfo() {if (mTencent != null && mTencent.isSessionValid()) {IUiListener listener = new IUiListener() {@Overridepublic void onError(UiError e) {}@Overridepublic void onComplete(final Object response) {Message msg = new Message();msg.obj = response;ViseLog.e("................"+response.toString());msg.what = 0;mHandler.sendMessage(msg);}@Overridepublic void onCancel() {ViseLog.d("登录取消..");}};userInfo = new UserInfo(this, mTencent.getQQToken());userInfo.getUserInfo(listener);}}}**新浪登录:**package com.vincent.cloud.ui;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.ImageView;import android.widget.Toast;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.bumptech.glide.Glide;import com.sina.weibo.sdk.auth.Oauth2AccessToken;import com.sina.weibo.sdk.auth.WbConnectErrorMessage;import com.sina.weibo.sdk.auth.sso.SsoHandler;import com.tencent.tauth.Tencent;import com.vincent.cloud.R;import com.vise.log.ViseLog;import com.zhy.http.okhttp.OkHttpUtils;import com.zhy.http.okhttp.callback.StringCallback;import okhttp3.Call;/*** @name Login* @class name:com.vincent.cloud* @class describe* @anthor Vincent* @time /7/19 10:34* @change* @chang time* @class describe*/public class SinaLoginActivity extends AppCompatActivity {public static void actionStart(Activity activity){Intent intent = new Intent(activity,SinaLoginActivity.class);activity.startActivity(intent);}private ImageView ivHead;/*** 新浪微博*/private SsoHandler mSsoHandler;/** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */private Oauth2AccessToken mAccessToken;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sina_login);ivHead = (ImageView)findViewById(R.id.iv_head_url_sina);//新浪微博mSsoHandler = new SsoHandler(SinaLoginActivity.this);findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//授权方式有三种,第一种对客户端授权 第二种对Web短授权,第三种结合前两中方式mSsoHandler.authorize(new SelfWbAuthListener());}});}private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{@Overridepublic void onSuccess(final Oauth2AccessToken token) {runOnUiThread(new Runnable() {@Overridepublic void run() {mAccessToken = token;if (mAccessToken.isSessionValid()) {// 显示 Token// updateTokenView(false);// 保存 Token 到 SharedPreferences// AccessTokenKeeper.writeAccessToken(LoginActivity.this, mAccessToken);ViseLog.d("授权成功...sina。。。");//获取个人资料///2/users/show.jsonOkHttpUtils.get().url("/2/users/show.json").addParams("access_token",mAccessToken.getToken()).addParams("uid",mAccessToken.getUid()).build().execute(new StringCallback() {@Overridepublic void onError(Call call, Exception e, int id) {ViseLog.d("获取失败:"+e.getMessage());e.printStackTrace();}@Overridepublic void onResponse(String response, int id) {ViseLog.d("response:"+response);JSONObject jsonObject = JSON.parseObject(response);String headUrl = jsonObject.getString("profile_image_url");Glide.with(SinaLoginActivity.this).load(headUrl).into(ivHead);}});}}});}@Overridepublic void cancel() {ViseLog.d("取消授权---sinal---");}@Overridepublic void onFailure(WbConnectErrorMessage errorMessage) {Toast.makeText(SinaLoginActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {//sina loginif(mSsoHandler!=null){mSsoHandler.authorizeCallBack(requestCode,resultCode,data);}}}

源码下载地址:/download/wo0123456789wo/10847331

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。