您的位置:首页 > 移动开发 > 微信开发

Android第三方登录集合(QQ、微信、微博、百度、facebook、twitter)

2017-10-23 12:48 761 查看
分开依赖,需要哪个集成哪个,不捆绑在一起。

Step 1

在根build.gradle加入jitpack的仓库:

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}


Step 2

在module的build.gradle添加依赖

dependencies {
compile 'com.github.fszeng2011:thirdpartlogin-core:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-qq:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-weixin:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-weibo:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-baidu:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-facebook:1.0'
compile 'com.github.fszeng2011:thirdpartlogin-twitter:1.0'
}


Step 3 —-(微信)

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自WXEventActivity,内容不需要写。

Step 4 —-(微信)

在AndroidManifest.xml添加如下:

<activity
android:theme="@android:style/Theme.NoDisplay"
android:name=".wxapi.WXEntryActivity"
android:exported="true"/>


Step 5

在字符串资源xml文件中添加appid和secret。

<string name="tencent_appid">222222</string>
<!-- tencent+appid -->
<string name="tencent_login_scheme">tencent222222</string>
<string name="weixin_appid">wxde56b4c4fcd755c7</string>
<string name="weixin_secret">33702de56b4c4fcd755c76bbf7468943</string>
<string name="weibo_appkey">345347072</string>
<string name="baidu_apikey">u10rwmxIpFG8YTXYaGXSI6lV</string>
<string name="facebook_appkey">875646142592091</string>
<!-- fb+appid -->
<string name="facebook_login_scheme">fb875646142592091</string>
<string name="twitter_apikey">J20TVzE1VihlIt5Vr3XufK6pN</string>
<string name="twitter_secret">aiaym3F07GpRMsecMrjZ2ocmrI7T0TGXfmEqXebpWrUAciKG0v</string>


获取方法:

QQ:到http://open.qq.com/的应用管理里创建应用即可。

微信:到https://open.weixin.qq.com创建移动应用,需要认证通过的开发者才能开通登录权限。没有开通登录权限是无法调起授权页面的。

微博:到http://open.weibo.com/development/mobile接入应用,回调页填写:https://api.weibo.com/oauth2/default.html,也可以填写自定义的,如果填写了自定义的,在实例化WeiboLogin时需要使用传入回调页链接的构造方法。填写完资料即可完成接入,不需要提交审核即可测试登录。

百度:到http://developer.baidu.com/注册帐号,右上角用户名下拉菜单“应用管理”里创建工程,创建后就有apikey,安全设置里如果启用了“Implicit Grant授权方式”,授权回调页:必须填写,内容填写任意符合uri规则字符串即可。

facebook:到https://developers.facebook.com/注册帐号并添加应用即可获取。

twitter:到https://apps.twitter.com/注册帐号并创建应用即可获取。

示例

public class ThirdLoginActivity extends Activity {
@BindView(R.id.btnQQLogin)
Button btnQQLogin;
@BindView(R.id.btnQQLogout)
Button btnQQLogout;
@BindView(R.id.iv)
ImageView iv;
@BindView(R.id.tv)
TextView tv;
private QQLogin qqLogin;
private WeixinLogin weixinLogin;
private WeiboLogin weiboLogin;
private BaiduLogin baiduLogin;
private FacebookLogin facebookLogin;
private TwitterLogin twitterLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("第三方登录");
setContentView(R.layout.activity_third_login);
ButterKnife.bind(this);
qqLogin = new QQLogin(this);
weixinLogin = new WeixinLogin(this);
weiboLogin = new WeiboLogin(this);
baiduLogin = new BaiduLogin(this);
facebookLogin = new FacebookLogin(this);
twitterLogin = new TwitterLogin(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
qqLogin.logout();
weixinLogin.onDestroy();
}

@OnClick({R.id.btnQQLogin, R.id.btnQQLogout, R.id.btnWxLogin, R.id.btnWbLogin, R.id.btnBdLogin, R.id.btnFbLogin, R.id.btnTwLogin})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btnQQLogin:
qqLogin.login(this, callback);
break;
case R.id.btnQQLogout:
iv.setImageBitmap(null);
tv.setText("");
btnQQLogin.setVisibility(View.VISIBLE);
btnQQLogout.setVisibility(View.GONE);
qqLogin.logout();
break;
case R.id.btnWxLogin:
weixinLogin.login(this, callback);
break;
case R.id.btnWbLogin:
weiboLogin.login(this, callback);
break;
case R.id.btnBdLogin:
baiduLogin.login(this, callback);
break;
case R.id.btnFbLogin:
facebookLogin.login(this, callback);
break;
case R.id.btnTwLogin:
twitterLogin.login(this, callback);
break;
}
}

private LoginCallback callback = new LoginCallback() {
@Override
public void onSuccess(int loginType, final UserInfo userInfo, JSONObject origin) {
if (loginType == qqLogin.loginType()) {
btnQQLogin.setVisibility(View.GONE);
btnQQLogout.setVisibility(View.VISIBLE);
}
tv.setText("");
iv.setImageBitmap(null);
tv.append("id: " + userInfo.id + "\n");
tv.append("性别: " + userInfo.gender + "\n");
tv.append("昵称: " + userInfo.nickname + "\n");
tv.append("所在地: " + userInfo.location + "\n");
tv.append("头像: " + userInfo.figureUrl + "\n\n");
tv.append("原始数据\n");
tv.append(origin.toString().replace(",", "\n"));
if (!TextUtils.isEmpty(userInfo.figureUrl)) {
new Thread() {
@Override
public void run() {
final Bitmap bitmap = ImageUtils.getNetBitmap(userInfo.figureUrl);
runOnUiThread(new Runnable() {
@Override
public void run() {
iv.setImageBitmap(bitmap);
}
});
}
}.start();
}
}

@Override
public void onCancel() {
showToast("用户取消");
}

@Override
public void onError(int errorCode, String errorDetail) {
showToast(errorDetail);
}
};

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
qqLogin.onActivityResult(requestCode, resultCode, data);
weiboLogin.onActivityResult(requestCode, resultCode, data);
facebookLogin.onActivityResult(requestCode, resultCode, data);
twitterLogin.onActivityResult(requestCode, resultCode, data);
}
}


源码:

核心公共部分:https://github.com/fszeng2011/thirdpartlogin-core

QQ:https://github.com/fszeng2011/thirdpartlogin-qq

微信:https://github.com/fszeng2011/thirdpartlogin-weixin

微博:https://github.com/fszeng2011/thirdpartlogin-weibo

百度:https://github.com/fszeng2011/thirdpartlogin-baidu

facebook:https://github.com/fszeng2011/thirdpartlogin-facebook

twitter:https://github.com/fszeng2011/thirdpartlogin-twitter
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息