2015-09-28 5 views
0

Я сделал Войти образец приложение из Facebook, но не может войти в мое собственное приложение с помощью facebook.i я не в состоянии стрелять какие-либо действия на немВойти через Facebook в мое приложение

public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     TextView textView = (TextView) view.findViewById(R.id.textView); 
     LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); 

     loginButton.setReadPermissions("user_friends"); 
     loginButton.setFragment(this); 
     loginButton.registerCallback(callbackManager, callback); 




    } 
+0

проверить эту ссылку http://stackoverflow.com/questions/30317540/how-do-i-fetch-name-and-email-using-facebook-sdk/30318174#30318174 – Tufan

ответ

0

использовать этот код в onCreateViiew

LoginManager.getInstance().registerCallback(callbackManager, 
      new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        Log.d("Success", "Login"); 

      //code for success 

       } 

       @Override 
       public void onCancel() { 

       } 

       @Override 
       public void onError(FacebookException exception) { 
        // toast 
       } 
      }); 

и добавить код для кнопки OnClick FB Вход

LoginManager.getInstance().logInWithReadPermissions(this, 
      Arrays.asList("email", "user_likes")); 

и отметить эту строку в onActivi tyResult

callbackManager.onActivityResult(requestCode, responseCode, intent); 
0

попробовать следующий пример,

добавить FacebookSdk в проекте и следовать кодексу.

Main.java

public class LoginWithFacebook extends Activity { 

    // Your Facebook APP ID 
    private static String APP_ID = "852117698163571"; // Replace your App ID here 

    // Instance of Facebook Class 
    private Facebook facebook; 
    @SuppressWarnings({ "unused", "deprecation" }) 
    private AsyncFacebookRunner mAsyncRunner; 
    String FILENAME = "AndroidSSO_data"; 
    private SharedPreferences mPrefs; 
    LoginButton btnLogin; 
    private UiLifecycleHelper uiHelper; 
    AQuery aQuery; 
    Button login; 

    String url,id,name,first_name,middle_name,last_name,location,gender,mobile_number,birthday; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login_with_facebook); 

     login=(Button)findViewById(R.id.button1); 
     btnLogin=(LoginButton)findViewById(R.id.authButton); 
     login.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       btnLogin.performClick(); 
      } 
     }); 
     aQuery= new AQuery(getApplicationContext()); 
     uiHelper = new UiLifecycleHelper(this, callback); 
     uiHelper.onCreate(savedInstanceState); 
    } 


    private Session.StatusCallback callback = new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, 
       Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }; 


    // When session is changed, this method is called from callback method 
    private void onSessionStateChange(Session session, SessionState state, 
      Exception exception) { 
     if (state.isOpened()) { 
      Log.i("Tag", "Logged in..."); 
      // make request to the /me API to get Graph user 
      Request.newMeRequest(session, new Request.GraphUserCallback() { 

       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        if (user != null) { 
         Log.v("url aq", "http://graph.facebook.com/"+user.getId()+"/picture?type=large"); 

         id=user.getId(); 
         name=user.getName(); 
         gender=user.getProperty("gender").toString(); 
         String userName=user.getProperty("email").toString(); 
         url="http://graph.facebook.com/"+user.getId()+"/picture?type=large"; 

         callFacebookLogout(getApplicationContext()); 

         Intent i=new Intent(LoginWithFacebook.this,GetDetail.class); 
         i.putExtra("id",id); 
         i.putExtra("name", name); 
         i.putExtra("gender", gender); 
         i.putExtra("url", url); 
         i.putExtra("username", userName); 
         startActivity(i); 
         finish(); 

        } 
       } 
      }).executeAsync(); 
     } else if (state.isClosed()) { 
      Log.i("Tag", "Logged out..."); 
//   otherView.setVisibility(View.GONE); 
     } 
    } 

    public static void callFacebookLogout(Context context) { 
     Session session = Session.getActiveSession(); 
     if (session != null) { 

      if (!session.isClosed()) { 
       session.closeAndClearTokenInformation(); 
       //clear your preferences if saved 
      } 
     } else { 

      session = new Session(context); 
      Session.setActiveSession(session); 

      session.closeAndClearTokenInformation(); 
       //clear your preferences if saved 

     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_login_with_facebook, menu); 
     return true; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     uiHelper.onActivityResult(requestCode, resultCode, data); 
     Log.i("Tag", "OnActivityResult..."); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     uiHelper.onResume(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     uiHelper.onPause(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     uiHelper.onDestroy(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     uiHelper.onSaveInstanceState(outState); 
    } 

} 

GetDetail.java

public class GetDetail extends Activity{ 

    Button btnBack; 
    TextView tvId,tvName,tvGender; 
    ImageView ivMypic; 
    AQuery aQuery; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.get_detail); 

     btnBack=(Button)findViewById(R.id.btnBack); 

     tvId=(TextView)findViewById(R.id.tvId); 
     tvName=(TextView)findViewById(R.id.tvName); 
     tvGender=(TextView)findViewById(R.id.tvGender); 

     ivMypic=(ImageView)findViewById(R.id.ivMypic); 

     aQuery=new AQuery(GetDetail.this); 

     Intent i=getIntent(); 
     tvId.setText("Id: "+i.getStringExtra("id")); 
     tvName.setText("Name: "+i.getStringExtra("name")); 
     tvGender.setText("Gender: "+i.getStringExtra("gender")+" UserName = "+i.getStringExtra("username")); 
     String imageUrl=i.getStringExtra("url"); 
     aQuery.id(ivMypic).image(imageUrl,false,true); 
     btnBack.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent login= new Intent(GetDetail.this,LoginWithFacebook.class); 
       startActivity(login); 
       finish(); 
      } 
     }); 
    } 
} 

и main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/ivProfile" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:src="@drawable/ic_launcher" /> 

    <LinearLayout 
     android:id="@+id/other_views" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     android:padding="5dp" > 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:gravity="left" 
      android:text="Name" 
      android:textSize="30dp" /> 

     <TextView 
      android:id="@+id/gender" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:gravity="left" 
      android:text="Gender" 
      android:textSize="15dp" /> 

     <TextView 
      android:id="@+id/location" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dip" 
      android:gravity="left" 
      android:text="Location" 
      android:textSize="15dp" /> 
    </LinearLayout> 

     <com.facebook.widget.LoginButton 
      android:id="@+id/authButton" 
      android:visibility="gone" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="30dp" 
      /> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Login" /> 

    </LinearLayout> 

get_detail.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/btnBack" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Back" /> 

    <ImageView 
     android:id="@+id/ivMypic" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:layout_gravity="center_vertical" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/tvId" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:gravity="center_vertical" 
     android:layout_marginBottom="20dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/tvName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:gravity="center_vertical" 
     android:layout_marginBottom="20dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 


    <TextView 
     android:id="@+id/tvGender" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:gravity="center_vertical" 
     android:layout_marginBottom="20dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
</LinearLayout> 

manifest.xml есть.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.loginwithfacebook" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="com.facebook.sdk.ApplicationId" 
      android:value="@string/app_id" /> 

     <activity 
      android:name="com.example.loginwithfacebook.LoginWithFacebook" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.facebook.LoginActivity" 
      android:label="@string/app_name" 
      android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 
     <activity android:name=".GetDetail" /> 

    </application> 

</manifest> 
Смежные вопросы