Ver Fonte

Facebook Log In. You'll need to make a facebook developers account in order for app to redirect after log in.

Fernando Diaz há 9 anos atrás
pai
commit
1add5445e4

+ 35 - 17
app/src/main/AndroidManifest.xml

@@ -2,8 +2,15 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.yiupang.freefoodfinder">
 
-    <uses-permission android:name="android.permission.INERNET"/>
+    <uses-permission android:name="android.permission.INERNET" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
+
+    <!-- To auto-complete the email text field in the login form with the user's emails -->
+    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+    <uses-permission android:name="android.permission.READ_PROFILE" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+
     <application
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
@@ -11,30 +18,41 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar">
-        <meta-data android:name="com.facebook.sdk.ApplicationId"
-            android:value="@string/facebook_app_id"/>
-        <meta-data
-            android:name="com.google.android.gms.version"
-            android:value="@integer/google_play_services_version" />
+
+        <!-- Facebook meta-data -->
         <meta-data
-            android:name="com.google.android.geo.API_KEY"
-            android:value="@string/google_maps_key" />
+            android:name="com.facebook.sdk.ApplicationId"
+            android:value="@string/facebook_app_id" />
 
-        <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" />
+        <!-- Login Activity -->
         <activity
-            android:name=".MainActivity"
-            android:label="@string/app_name"
-            android:theme="@style/AppTheme.NoActionBar">
+            android:name=".LoginActivity"
+            android:label="@string/app_name">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-    </application>
 
+        <!-- Main Activity -->
+        <activity
+            android:name=".MainActivity"
+            android:parentActivityName=".LoginActivity"
+            android:theme="@style/AppTheme.NoActionBar">
+        </activity>
+
+        <!-- Google API meta-deta -->
+        <meta-data
+            android:name="com.google.android.gms.version"
+            android:value="@integer/google_play_services_version" />
+        <meta-data
+            android:name="com.google.android.geo.API_KEY"
+            android:value="@string/google_maps_key" />
+
+
+
+
+
+    </application>
 </manifest>

+ 98 - 0
app/src/main/java/com/example/yiupang/freefoodfinder/LoginActivity.java

@@ -0,0 +1,98 @@
+package com.example.yiupang.freefoodfinder;
+
+import android.support.v7.app.AppCompatActivity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.facebook.AccessToken;
+import com.facebook.AccessTokenTracker;
+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;
+
+
+public class LoginActivity extends AppCompatActivity
+{
+
+    private CallbackManager callbackManager;
+    private TextView info;
+    private LoginButton loginButton;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        FacebookSdk.sdkInitialize(getApplicationContext());
+
+        AccessTokenTracker accessTokenTracker = new AccessTokenTracker() {
+            @Override
+            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken newAccessToken) {
+                updateWithToken(newAccessToken);
+            }
+        };
+
+        updateWithToken(AccessToken.getCurrentAccessToken());
+
+
+        callbackManager = CallbackManager.Factory.create();
+
+        setContentView(R.layout.activity_login);
+        info = (TextView)findViewById(R.id.info);
+        loginButton = (LoginButton)findViewById(R.id.login_button);
+
+
+        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
+
+            @Override
+            public void onSuccess(LoginResult loginResult) {
+                nextActivity();
+            }
+
+            @Override
+            public void onCancel() {
+                info.setText("Login attempt cancelled.");
+
+            }
+
+            @Override
+            public void onError(FacebookException error) {
+                info.setText("Login attempt failed.");
+
+            }
+        });
+
+
+    }
+
+    // Check token to determine if already logged in
+    private void updateWithToken(AccessToken currentAccessToken) {
+
+        if (currentAccessToken != null) {
+            nextActivity();
+
+        } else {
+            return;
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
+        //Facebook login
+        callbackManager.onActivityResult(requestCode, responseCode, intent);
+
+    }
+
+    // Redirect to main activity
+    private void nextActivity(){
+
+        Intent main = new Intent(LoginActivity.this, MainActivity.class);
+        startActivity(main);
+    }
+
+}

+ 0 - 37
app/src/main/java/com/example/yiupang/freefoodfinder/MainActivity.java

@@ -22,53 +22,16 @@ import com.roughike.bottombar.OnMenuTabClickListener;
 //CODE SEMLL: unused import
 import com.roughike.bottombar.BottomBarBadge;
 
-import com.facebook.CallbackManager;
-import com.facebook.FacebookSdk;
-import com.facebook.login.widget.LoginButton;
-import com.facebook.login.LoginResult;
-import com.facebook.FacebookCallback;
-import com.facebook.FacebookException;
-
-
-
 public class MainActivity extends ActionBarActivity
 {
     static final String RED = "ff0000";
     BottomBar bottomBar;
 
-    //CODE SMELL: next 3 lines of comments should be removeed
-    //private TextView info;
-    //private LoginButton loginButton;
-    //private CallbackManager callbackManager;
-
     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
-        //CODE SMELL: Remove comment block
-/*        FacebookSdk.sdkInitialize(getApplicationContext());
-        callbackManager = CallbackManager.Factory.create();
-        info = (TextView) findViewById(R.id.info);
-        loginButton = (LoginButton) findViewById(R.id.login_button);
-
-        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
-            @Override
-            public void onSuccess(LoginResult loginResult) {
-                info.setText("UserID:" + loginResult.getAccessToken().getUserId() + "\n" +
-                "Auth Token" +
-                loginResult.getAccessToken().getToken());
-            }
-
-            @Override
-            public void onCancel() {
-                info.setText("Login insuccessful");
-            }
 
-            @Override
-            public void onError(FacebookException error) {
-                info.setText("Login insuccessful");
-            }
-        });*/
         setContentView(R.layout.activity_main);
         bottomBar = BottomBar.attach(this, savedInstanceState);
         //CODE SMELL: It's complicated

+ 1 - 1
app/src/main/java/com/example/yiupang/freefoodfinder/MapScreen.java

@@ -47,7 +47,7 @@ public class MapScreen extends android.support.v4.app.Fragment implements OnMapR
         LatLng slo = new LatLng(35.2827778, -120.6586111);
         LatLng sf = new LatLng(37.774929, -122.419416);
         LatLng theP = new LatLng(35.302833, -120.651662);
-        map.addMarker(new MarkerOptions().position(slo).title("Downtown").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)).snippet("Downtownd of slo"));
+        map.addMarker(new MarkerOptions().position(slo).title("Downtown").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)).snippet("Downtown of slo"));
         map.addMarker(new MarkerOptions().position(theP).title("The P").snippet("The “P” is a 50-by-30 foot landmark located atop a northwestern hill of California Polytechnic State University, San Luis Obispo, California."));
         map.addMarker(new MarkerOptions().position(sf).title("Marker in sf").snippet("Golden Gate Bridge"));
         map.moveCamera(CameraUpdateFactory.newLatLngZoom(slo, 12.0f));

+ 49 - 0
app/src/main/res/layout/activity_login.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent" android:layout_height="match_parent"
+    android:padding="16dp"
+    android:fitsSystemWindows="true"
+    android:background="@color/redd"
+    >
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="56dp"
+        android:paddingLeft="24dp"
+        android:paddingRight="24dp"
+        android:weightSum="1"
+        android:id="@+id/linearLayout">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/info"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentTop="true"
+            android:textSize="18sp"
+            />
+    </LinearLayout>
+
+    <com.facebook.login.widget.LoginButton
+        android:id="@+id/login_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="77dp"
+        android:layout_alignParentBottom="true"
+        android:layout_centerHorizontal="true" />
+
+    <ImageView
+        android:id="@+id/imageView"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="center_horizontal"
+        android:adjustViewBounds="true"
+        android:cropToPadding="false"
+        android:src="@drawable/logo2"
+        android:layout_marginBottom="57dp"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentStart="true" />
+
+</RelativeLayout>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -3,4 +3,5 @@
     <color name="colorPrimary">#3F51B5</color>
     <color name="colorPrimaryDark">#303F9F</color>
     <color name="colorAccent">#FF4081</color>
+    <color name="redd">#ff0000</color>
 </resources>

+ 3 - 1
app/src/main/res/values/strings.xml

@@ -1,7 +1,9 @@
 <resources>
     <string name="app_name">FreeFoodFinder</string>
     <string name="action_settings">Settings</string>
-    <string name="facebook_app_id">169855136874779</string>
+
+    <!-- id # must match with your fb developer account -->
+    <string name="facebook_app_id">1363372700411977</string>
 
     <!-- Titles for the button bar -->
     <string name="about_us">About Us</string>