Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add facebook login and share #16

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion example/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@ android {
versionName "1.0"

manifestPlaceholders = [
qq_id: "XXXXXX"
qq_id: "XXXXXX",
FACEBOOK_ID:"XXXXXX"
]
resValue "string", "facebook_app_id", "XXXXXX"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Expand Down
7 changes: 7 additions & 0 deletions example/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<provider
android:authorities="com.facebook.app.FacebookContentProvider${FACEBOOK_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ protected void onCreate(Bundle savedInstanceState) {
.wxId("XXXXX")
.weiboRedirectUrl("XXXXXX")
.wxSecret("XXXXXX");
ShareManager.init(config);
ShareManager.init(this,config);

findViewById(R.id.login_qq).setOnClickListener(this);
findViewById(R.id.login_weibo).setOnClickListener(this);
findViewById(R.id.login_wx).setOnClickListener(this);

findViewById(R.id.login_fb).setOnClickListener(this);
mLoginListener = new LoginListener() {
@Override
public void loginSuccess(LoginResult result) {
Expand Down Expand Up @@ -80,6 +80,9 @@ public void onClick(View view) {
case R.id.login_wx:
LoginUtil.login(this, LoginPlatform.WX, mLoginListener);
break;
case R.id.login_fb:
LoginUtil.login(this, LoginPlatform.FB, mLoginListener);
break;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);

ShareConfig config = ShareConfig.instance().wxId(APP_ID).wxSecret(APP_SECRET);
ShareManager.init(config);
ShareManager.init(getApplicationContext(), config);

findViewById(R.id.action_login).setOnClickListener(new View.OnClickListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@ public void shareCancel() {
.qqId("XXXXXX")
.weiboId("XXXXXX")
.wxId("xXXXXX");
ShareManager.init(config);
ShareManager.init(getApplicationContext(), config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public void bindView(final View v) {
v.findViewById(R.id.share_weibo).setOnClickListener(this);
v.findViewById(R.id.share_wx).setOnClickListener(this);
v.findViewById(R.id.share_wx_timeline).setOnClickListener(this);
v.findViewById(R.id.share_facebook).setOnClickListener(this);

mShareListener = new ShareListener() {
@Override
Expand Down Expand Up @@ -73,6 +74,10 @@ public void onClick(View view) {
"http://www.google.com", "http://shaohui.me/images/avatar.gif",
mShareListener);
break;
case R.id.share_facebook:
ShareUtil.shareImage(getContext(),SharePlatform.FACEBOOK, "http://shaohui.me/images/avatar.gif",
mShareListener);
break;
}
dismiss();
}
Expand Down
7 changes: 7 additions & 0 deletions example/src/main/res/layout/activity_login.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@
android:layout_marginBottom="16dp"
android:text="QQ登录"
/>
<Button
android:id="@+id/login_fb"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_marginBottom="16dp"
android:text="FaceBook登录"
/>
</LinearLayout>

</RelativeLayout>
27 changes: 27 additions & 0 deletions example/src/main/res/layout/layout_bottom_share.xml
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,33 @@
android:text="QQ空间"
/>
</RelativeLayout>

<RelativeLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/mRlFb"
android:layout_weight="1"
>

<ImageView
android:id="@+id/share_facebook"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_centerHorizontal="true"
android:src="@mipmap/share_facebook"
/>

<TextView
android:textSize="13sp"
android:gravity="center"
android:textColor="#CCFFFFFF"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="17dp"
android:text="FaceBook"
/>
</RelativeLayout>
</LinearLayout>

</RelativeLayout>
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions shareutil/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ dependencies {
compile files('libs/open_sdk_r5756_lite.jar')
compile files('libs/weiboSDKCore_3.1.4.jar')
compile files('libs/libammsdk.jar')
compile 'com.facebook.android:facebook-android-sdk:4.+'
}

apply from: 'bintrayUpload.gradle'
2 changes: 2 additions & 0 deletions shareutil/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="me.shaohui.shareutil"
tools:overrideLibrary="com.facebook"
>

<uses-permission android:name="android.permission.INTERNET"/>
Expand Down
4 changes: 4 additions & 0 deletions shareutil/src/main/java/me/shaohui/shareutil/LoginUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import me.shaohui.shareutil.login.LoginListener;
import me.shaohui.shareutil.login.LoginPlatform;
import me.shaohui.shareutil.login.LoginResult;
import me.shaohui.shareutil.login.instance.FbLoginInstance;
import me.shaohui.shareutil.login.instance.LoginInstance;
import me.shaohui.shareutil.login.instance.QQLoginInstance;
import me.shaohui.shareutil.login.instance.WeiboLoginInstance;
Expand Down Expand Up @@ -54,6 +55,9 @@ static void action(Activity activity) {
case LoginPlatform.WX:
mLoginInstance = new WxLoginInstance(activity, mLoginListener, isFetchUserInfo);
break;
case LoginPlatform.FB:
mLoginInstance=new FbLoginInstance(activity, mLoginListener, isFetchUserInfo);
break;
default:
mLoginListener.loginFailure(new Exception(INFO.UNKNOW_PLATFORM));
activity.finish();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package me.shaohui.shareutil;

import android.content.Context;
import com.facebook.FacebookSdk;
/**
* Created by shaohui on 2016/12/5.
*/
Expand All @@ -10,8 +12,9 @@ public class ShareManager {

public static ShareConfig CONFIG;

public static void init(ShareConfig config) {
public static void init(final Context context, ShareConfig config) {
isInit = true;
CONFIG = config;
FacebookSdk.sdkInitialize(context.getApplicationContext());
}
}
30 changes: 28 additions & 2 deletions shareutil/src/main/java/me/shaohui/shareutil/ShareUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
import me.shaohui.shareutil.share.ShareImageObject;
import me.shaohui.shareutil.share.ShareListener;
import me.shaohui.shareutil.share.SharePlatform;
import me.shaohui.shareutil.share.facebook.FbCallBack;
import me.shaohui.shareutil.share.instance.DefaultShareInstance;
import me.shaohui.shareutil.share.instance.FbShareInstance;
import me.shaohui.shareutil.share.instance.QQShareInstance;
import me.shaohui.shareutil.share.instance.ShareInstance;
import me.shaohui.shareutil.share.instance.WeiboShareInstance;
Expand Down Expand Up @@ -147,7 +149,11 @@ private static ShareListener buildProxyListener(ShareListener listener) {
return new ShareListenerProxy(listener);
}

public static void handleResult(Intent data) {
static int getPlatform(){
return mPlatform;
}

private static void handleResult(Intent data) {
// 微博分享会同时回调onActivityResult和onNewIntent, 而且前者返回的intent为null
if (mShareInstance != null && data != null) {
mShareInstance.handleResult(data);
Expand All @@ -160,6 +166,24 @@ public static void handleResult(Intent data) {
}
}

public static void handleResult(final int requestCode,
final int resultCode, final Intent data){
if (mPlatform==SharePlatform.FACEBOOK) {
if (mShareInstance != null && data != null) {
if (mShareInstance instanceof FbCallBack) {
final FbCallBack fsInstance = (FbCallBack) mShareInstance;
fsInstance.handleResult(requestCode, resultCode, data);
}
} else if (data == null) {
ShareLogger.e(INFO.HANDLE_DATA_NULL);
} else {
ShareLogger.e(INFO.UNKNOWN_ERROR);
}
}else{
handleResult(data);
}
}

private static ShareInstance getShareInstance(@SharePlatform.Platform int platform,
Context context) {
switch (platform) {
Expand All @@ -171,6 +195,8 @@ private static ShareInstance getShareInstance(@SharePlatform.Platform int platfo
return new QQShareInstance(context, ShareManager.CONFIG.getQqId());
case SharePlatform.WEIBO:
return new WeiboShareInstance(context, ShareManager.CONFIG.getWeiboId());
case SharePlatform.FACEBOOK:
return new FbShareInstance(mShareListener);
case SharePlatform.DEFAULT:
default:
return new DefaultShareInstance();
Expand Down Expand Up @@ -246,7 +272,7 @@ public static boolean isWeiXinInstalled(Context context) {
IWXAPI api = WXAPIFactory.createWXAPI(context, ShareManager.CONFIG.getWxId(), true);
return api.isWXAppInstalled();
}

private static class ShareListenerProxy extends ShareListener {

private final ShareListener mShareListener;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
} else {
// handle 微信回调
LoginUtil.handleResult(-1, -1, getIntent());
ShareUtil.handleResult(getIntent());
ShareUtil.handleResult(-1, -1, getIntent());
finish();
}
}
Expand All @@ -71,7 +71,7 @@ protected void onNewIntent(Intent intent) {
if (mType == LoginUtil.TYPE) {
LoginUtil.handleResult(0, 0, intent);
} else if (mType == ShareUtil.TYPE) {
ShareUtil.handleResult(intent);
ShareUtil.handleResult(0, 0,intent);
}
finish();
}
Expand All @@ -84,7 +84,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mType == LoginUtil.TYPE) {
LoginUtil.handleResult(requestCode, resultCode, data);
} else if (mType == ShareUtil.TYPE) {
ShareUtil.handleResult(data);
ShareUtil.handleResult(requestCode, resultCode, data);
}
finish();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
public class LoginPlatform {

@Documented
@IntDef({QQ, WX, WEIBO})
@IntDef({QQ, WX, WEIBO, FB})
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.PARAMETER)
public @interface Platform {
Expand All @@ -26,4 +26,5 @@ public class LoginPlatform {
public static final int WX = 3;

public static final int WEIBO = 5;
public static final int FB = 6;
}
Loading