mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Add basic facebook login
This commit is contained in:
parent
07ebfcb46d
commit
3aa5ec4608
11 changed files with 139 additions and 19 deletions
|
|
@ -6,8 +6,8 @@
|
|||
android:screenOrientation="portrait" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="22" />
|
||||
android:minSdkVersion="15"
|
||||
android:targetSdkVersion="23" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
|
|
@ -73,6 +73,7 @@
|
|||
<meta-data
|
||||
android:name="io.fabric.ApiKey"
|
||||
android:value="2eb3b3edb3b0f4722d37d649a5af366656e46ddd" />
|
||||
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
|
||||
|
||||
<activity
|
||||
android:name=".AboutActivity"
|
||||
|
|
@ -109,6 +110,12 @@
|
|||
android:name="android.support.PARENT_ACTIVITY"
|
||||
android:value="com.habitrpg.android.habitica.MainActivity" />
|
||||
</activity>
|
||||
|
||||
<activity android:name="com.facebook.FacebookActivity"
|
||||
android:configChanges=
|
||||
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:label="@string/app_name" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/beta/1.1.2/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics-core/2.3.0/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.crashlytics.sdk.android/crashlytics/2.3.0/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.facebook.android/facebook-android-sdk/4.7.0/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.github.clans/fab/1.6.1/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.github.mmin18.layoutcast/library/1.1.5/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.github.porokoro.paperboy/paperboy/2.1.0/jars" />
|
||||
|
|
@ -126,6 +127,7 @@
|
|||
<orderEntry type="library" exported="" name="org.abego.treelayout.core-1.0.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="library-1.1.5" level="project" />
|
||||
<orderEntry type="library" exported="" name="DBFlow-2.2.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="bolts-android-1.2.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="materialdrawer-4.3.8" level="project" />
|
||||
<orderEntry type="library" exported="" name="appcompat-v7-23.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="checkout-0.7.4" level="project" />
|
||||
|
|
@ -142,12 +144,13 @@
|
|||
<orderEntry type="library" exported="" name="design-23.0.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="fabric-1.3.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="beta-1.1.2" level="project" />
|
||||
<orderEntry type="library" exported="" name="facebook-android-sdk-4.7.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="iconics-core-1.7.9" level="project" />
|
||||
<orderEntry type="library" exported="" name="paperboy-2.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="javawriter-2.5.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="commons-codec-1.10" level="project" />
|
||||
<orderEntry type="library" exported="" name="kotlin-stdlib-0.12.613" level="project" />
|
||||
<orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" />
|
||||
<orderEntry type="library" exported="" name="kotlin-stdlib-0.12.613" level="project" />
|
||||
<orderEntry type="library" exported="" name="fab-1.6.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="instabugcore-1.8-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" exported="" name="cardview-v7-22.2.0" level="project" />
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@ dependencies {
|
|||
|
||||
// IAP Handling / Verification
|
||||
compile 'org.solovyev.android:checkout:0.7.4@aar'
|
||||
|
||||
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
|
|
@ -142,14 +142,14 @@
|
|||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_span="2"
|
||||
android:layout_gravity="center">
|
||||
android:layout_gravity="center" >
|
||||
|
||||
<Button
|
||||
android:id="@+id/login_btn"
|
||||
|
|
@ -165,7 +165,20 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_marginBottom="30dp">
|
||||
<com.facebook.login.widget.LoginButton
|
||||
android:id="@+id/login_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
|
||||
android:layout_span="2"/>
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
|
|
|
|||
|
|
@ -155,4 +155,6 @@
|
|||
<string name="title_activity_party">Party</string>
|
||||
<string name="title_activity_gem_purchase">Purchase Gems</string>
|
||||
<string name="gryphon">Gryphon</string>
|
||||
|
||||
<string name="facebook_app_id">128307497299777</string>
|
||||
</resources>
|
||||
|
|
@ -25,6 +25,8 @@ import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocialTokens;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.raizlabs.android.dbflow.structure.ModelAdapter;
|
||||
|
|
@ -156,6 +158,16 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
this.apiService.connectLocal(auth, callback);
|
||||
}
|
||||
|
||||
public void connectSocial(String userId, String accessToken, Callback<UserAuthResponse> callback) {
|
||||
UserAuthSocial auth = new UserAuthSocial();
|
||||
auth.setNetwork("facebook");
|
||||
UserAuthSocialTokens authResponse = new UserAuthSocialTokens();
|
||||
authResponse.setClient_id(userId);
|
||||
authResponse.setAccess_token(accessToken);
|
||||
auth.setAuthResponse(authResponse);
|
||||
this.apiService.connectSocial(auth, callback);
|
||||
}
|
||||
|
||||
public void deleteTask(Task item, TaskDeletionCallback cb) {
|
||||
this.apiService.deleteTask(item.getId(), cb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import org.solovyev.android.checkout.Products;
|
|||
import org.solovyev.android.checkout.Purchase;
|
||||
import org.solovyev.android.checkout.PurchaseVerifier;
|
||||
import org.solovyev.android.checkout.RequestListener;
|
||||
import com.facebook.FacebookSdk;
|
||||
|
||||
import java.io.File;
|
||||
import java.security.Security;
|
||||
|
|
@ -41,6 +42,8 @@ public class HabiticaApplication extends Application {
|
|||
|
||||
FlowManager.init(this);
|
||||
|
||||
FacebookSdk.sdkInitialize(getApplicationContext());
|
||||
|
||||
Instabug.DEBUG = BuildConfig.DEBUG;
|
||||
Instabug.initialize(this, "a5aa5f471a9cd8a958c0c55181172655");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,13 @@ import android.widget.ProgressBar;
|
|||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.facebook.AccessToken;
|
||||
import com.facebook.CallbackManager;
|
||||
import com.facebook.FacebookCallback;
|
||||
import com.facebook.FacebookException;
|
||||
import com.facebook.FacebookSdk;
|
||||
import com.facebook.login.LoginResult;
|
||||
import com.facebook.login.widget.LoginButton;
|
||||
import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator;
|
||||
|
|
@ -57,6 +64,7 @@ public class LoginActivity extends AppCompatActivity
|
|||
private final static String TAG_APIKEY="key";
|
||||
|
||||
private Button mLoginNormalBtn;
|
||||
private LoginButton mFacebookLoginBtn;
|
||||
private EditText mUsernameET, mPasswordET,mEmail,mConfirmPassword;
|
||||
private TableRow mEmailRow, mConfirmPasswordRow;
|
||||
private APIHelper mApiHelper;
|
||||
|
|
@ -66,6 +74,8 @@ public class LoginActivity extends AppCompatActivity
|
|||
public Boolean isRegistering;
|
||||
private Menu menu;
|
||||
|
||||
private CallbackManager callbackManager;
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
|
|
@ -87,6 +97,30 @@ public class LoginActivity extends AppCompatActivity
|
|||
|
||||
mLoginNormalBtn.setOnClickListener(mLoginNormalClick);
|
||||
|
||||
|
||||
mFacebookLoginBtn = (LoginButton) this.findViewById(R.id.login_button);
|
||||
mFacebookLoginBtn.setReadPermissions("user_friends");
|
||||
|
||||
callbackManager = CallbackManager.Factory.create();
|
||||
|
||||
mFacebookLoginBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
|
||||
@Override
|
||||
public void onSuccess(LoginResult loginResult) {
|
||||
AccessToken accessToken = AccessToken.getCurrentAccessToken();
|
||||
mApiHelper.connectSocial(accessToken.getUserId(), accessToken.getToken(), LoginActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel() {
|
||||
Log.d("FB Login", "Cancelled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(FacebookException exception) {
|
||||
Log.d("FB Login", "Error");
|
||||
}
|
||||
});
|
||||
|
||||
HostConfig hc= PrefsActivity.fromContext(this);
|
||||
if(hc ==null) {
|
||||
hc = new HostConfig(getString(R.string.SP_address_default), "80", "", "");
|
||||
|
|
@ -114,20 +148,7 @@ public class LoginActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
}
|
||||
private View.OnClickListener mBarcodeClick = new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
IntentIntegrator integrator = new IntentIntegrator(LoginActivity.this);
|
||||
integrator.initiateScan();
|
||||
}
|
||||
};
|
||||
private View.OnClickListener mRegisterClick = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
}
|
||||
};
|
||||
private View.OnClickListener mLoginNormalClick = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
|
@ -191,7 +212,9 @@ public class LoginActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
|
||||
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
|
||||
super.onActivityResult(requestCode, resultCode, intent);
|
||||
callbackManager.onActivityResult(requestCode, resultCode, intent);
|
||||
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
|
||||
if (scanResult != null) {
|
||||
try {
|
||||
Log.d("scanresult", scanResult.getContents());
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirectionData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
|
||||
|
|
@ -81,6 +82,9 @@ public interface ApiService {
|
|||
@POST("/user/auth/local")
|
||||
void connectLocal(@Body UserAuth auth, Callback<UserAuthResponse> callback);
|
||||
|
||||
@POST("/user/auth/social")
|
||||
void connectSocial(@Body UserAuthSocial auth, Callback<UserAuthResponse> callback);
|
||||
|
||||
@POST("/user/sleep")
|
||||
void sleep(Callback<Void> voidCallback);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
/**
|
||||
* Created by viirus on 13/11/15.
|
||||
*/
|
||||
public class UserAuthSocial {
|
||||
private String network;
|
||||
private UserAuthSocialTokens authResponse;
|
||||
|
||||
public String getNetwork() {
|
||||
return network;
|
||||
}
|
||||
|
||||
public void setNetwork(String network) {
|
||||
this.network = network;
|
||||
}
|
||||
|
||||
public UserAuthSocialTokens getAuthResponse() {
|
||||
return authResponse;
|
||||
}
|
||||
|
||||
public void setAuthResponse(UserAuthSocialTokens authResponse) {
|
||||
this.authResponse = authResponse;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
/**
|
||||
* Created by viirus on 13/11/15.
|
||||
*/
|
||||
public class UserAuthSocialTokens {
|
||||
private String client_id;
|
||||
private String access_token;
|
||||
|
||||
public String getClient_id() {
|
||||
return client_id;
|
||||
}
|
||||
|
||||
public void setClient_id(String client_id) {
|
||||
this.client_id = client_id;
|
||||
}
|
||||
|
||||
public String getAccess_token() {
|
||||
return access_token;
|
||||
}
|
||||
|
||||
public void setAccess_token(String access_token) {
|
||||
this.access_token = access_token;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue