Android 第三方登录分享支付从未如此简单
2018-10-28 本文已影响29人
Hacknife
loginsharepay集成QQ,微博,微信的登录和分享。它配置简单,使用方便,且能够快速运用到应用中,为开发者节省了大量时间。
github:https://github.com/hacknife/LoginSharePay
使用说明
QQ,微博,微信的登录和分享必须通过LoginShare类来实现,如果你只想实现登录功能,那么这两个方法就可以不用实现(onNewIntent(Intent intent),onActivityResult(int requestCode, int resultCode, Intent data))。English
代码示例
public class MainActivity extends AppCompatActivity implements OnLoginshareListener {
LoginSharePay loginShare;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginShare = new LoginSharePay (this);
//loginShare.launchQQLogin();
//loginShare.launchWechatLogin();
//loginShare.launchWeiboLogin();
//loginShare.launchQQShare(MessageBody.QQMessageBodyBuilder());
//loginShare.launchWechatShare(MessageBody.WechatMessageBodyBuilder());
//loginShare.launchWeiboShare(MessageBody.WeiboMessageBodyBuilder());
}
@Override
protected void onStart() {
super.onStart();
loginShare.register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
loginShare.unRegister();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
loginShare.onNewIntent(intent);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
loginShare.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
/**
* @param type 类型 QQ ,Wechat 或 Weibo
* @param info json格式字符串的用户信息
*/
@Override
public void onLoginSuccess(Type type, String info) {
}
@Override
public void onLoginCancel(Type type) {
}
@Override
public void onLoginError(Type type, int errorCode) {
}
@Override
public void onShareSuccess(Type type) {
}
@Override
public void onShareCancel(Type type) {
}
@Override
public void onShareError(Type type, int code) {
}
如何配置
将本仓库引入你的项目:
Step 1. 添加JitPack仓库到Build文件
合并以下代码到项目根目录下的build.gradle文件的repositories尾。点击查看详情
allprojects {
repositories {
...
maven { url 'https://hacknife.com' }
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
Step 2. 添加依赖
合并以下代码到需要使用的application Module的dependencies尾,注意替换version版本号。点击查看详情
dependencies {
...
compile 'com.hacknife:loginsharepay:version'
compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
compile 'com.sina.weibo.sdk:core:4.1.0:openDefaultRelease@aar'
}
Step 3. 设置JniLibs目录
合并以下代码到你的application module的build.gradle。点击查看详情
android {
...
sourceSets {
main() {
jniLibs.srcDirs = ['libs']
}
}
}
Step 4. 复制动态库文件
点击这里下载 动态文件,解压并复制文件到libs目录。
[图片上传失败...(image-70fc10-1540706096564)]
Step 5. 复制Java文件
点击这里下载 Java文件,解压并复制文件到应用包。
[图片上传失败...(image-348050-1540706096565)]
Step 6. 修改AndroidManifest文件
复制代码且合并到Application标签
<application
android:icon="@mipmap/app_logo"
android:label="@string/app_name"
android:roundIcon="@mipmap/app_logo_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
......
<meta-data
android:name="qq"
android:value="qq_key" />
<meta-data
android:name="wechat"
android:value="wechat_key" />
<meta-data
android:name="wechatSecret"
android:value="wechat_secret" />
<meta-data
android:name="weibo"
android:value="weibo_key" />
<meta-data
android:name="weiboRedirectUrl"
android:value="weibo_redirectUrl" />
<meta-data
android:name="weiboScope"
android:value="weibo_scope" />
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent1234567" />
<!-- tencent+qq_key -->
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- java file corresponds to it -->
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name" />
......
step 7. 修改签名
申请的第三方账户的签名必须与应用的签名一致。 否则,登录和分享会出现问题。