自己封好的SDK 直接调用 就可以登录
包含facebook VK 登录分享
首先导入SDK 在项目gradle 添加FB,VK的引用
如果你不需要修改源码 直接导入arr文件 比较方便
repositories {
mavenCentral()
}
dependencies {
//compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.facebook.android:facebook-android-sdk:4.25.0'
compile 'com.vk:androidsdk:1.6.8'
compile project(':mqsdk')
}
一.在 清单文件添加声明 记得添加网络权限
<!-- facebook -->
<activity
android:name="com.mq.mqsdk.MyFacebook"
android:theme="@style/fun" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<!-- VK -->
<activity
android:name="com.mq.mqsdk.MyVK"
android:theme="@style/fun"></activity>
<activity
android:name="com.vk.sdk.VKServiceActivity"
android:label="ServiceActivity"
android:theme="@style/VK.Transparent" />
在Strings 添加 facebook 和VK 的AppId
id是fb和VK后台创建项目生成的
<string name="facebook_app_id">741826486001816</string>
<integer name="com_vk_sdk_AppId">6017658</integer>
二 声明自己的MyApplication 在MyApplication 的 onCreate添加VK 初始化
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
VKSdk.initialize(getApplicationContext());
}
}
三准备工作已经完成 可以直接调用 实现 FB VK的登录与分享
3.1 facebook 登录分享
/***
* facebook登陆
*/
initSDK.SDKManager().setFacebook(MainActivity.this, new initSDK.onMQFacebookListener() {
@Override
public void Process(Profile profile, String Token) {
Toast.makeText(MainActivity.this,
"用户数据是" + profile.getName(), Toast.LENGTH_SHORT).show();
}
});
/***
* facebook 分享
*/
initSDK.SDKManager().setFacebookShare(MainActivity.this,
"标题", "描述", "www.baidu.com", new initSDK.onMqFacebookShareLinstener() {
@Override
public void Process(int code) {
switch (code) {
case initSDK.SUCCESS:
Toast.makeText(MainActivity.this,
"分享成功", Toast.LENGTH_SHORT).show();
break;
case initSDK.CANCEL:
Toast.makeText(MainActivity.this,
"分享取消", Toast.LENGTH_SHORT).show();
break;
case initSDK.ERROR:
Toast.makeText(MainActivity.this,
"分享错误", Toast.LENGTH_SHORT).show();
break;
}
}
});
3.2 VK登录分享
/***
* VK登录
*/
initSDK.SDKManager().setVKlogin(MainActivity.this,
new initSDK.onMQVKLoginListener() {
@Override
public void process(VKAccessToken res, VKResponse response) {
final String userId = res.userId.toString();
final String token = res.accessToken.toString();
Toast.makeText(MainActivity.this,
"用户数据是" + response.json, Toast.LENGTH_SHORT).show();
}
});
/***
* VK分享
*/
final Bitmap b = BitmapFactory.
decodeResource(getResources(), R.mipmap.ic_launcher);
initSDK.SDKManager().setVKShare(MainActivity.this,
"标题", "描述", b, "www.baidu.com", new initSDK.onMQVKShareLinstener() {
@Override
public void process(int code) {
switch (code) {
case initSDK.SUCCESS:
Toast.makeText(MainActivity.this,
"分享成功", Toast.LENGTH_SHORT).show();
break;
case initSDK.CANCEL:
Toast.makeText(MainActivity.this,
"分享取消", Toast.LENGTH_SHORT).show();
break;
case initSDK.ERROR:
Toast.makeText(MainActivity.this,
"分享错误", Toast.LENGTH_SHORT).show();
break;
}
}
});
四 后台密钥
fb 和VK 如果后台不配置密钥 可以在没有客户端的情况下 登录分享网页版
这里用代码生成 然后配置到后台。
/**
* facebook 后台需要配置的 key hashes
* 可以在这里生成 配置在后台
*/
private void getKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.mq.mqsdkdemo",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
System.out.println("这里可以获取facebook KeyHash" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
/**
* VK 后台需要配置的 签名
* 可以在这里生成 配置在后台
*/
private void getVKkey() {
String[] fingerprints = VKUtil.getCertificateFingerprint(this, this.getPackageName());
for (String fingerprint : fingerprints) {
System.out.println("这里可以获取VK签名" + fingerprint);
}
}
附SDKDemo 下载地址