2015-05-14 49 views
2

[我爲我的應用程序編寫了我的登錄頁面的代碼.i已經使我的登錄成功使用給定的電子郵件和密碼,但是我在使用facebook登錄代碼時面臨一個問題。我已經檢查過這個https://developers.facebook.com/docs/facebook-login/android/v2.3如何在android中使用sdk 4.1.0登錄Facebook?

但我仍然「M收到錯誤信息,同時運行我的代碼爲每instructions.I」新來開發Android ...所以任何適當的幫助將是praiseworthy.Thankx提前。] 1

回答

4

在這裏,我的「M提供與sdk4 Facebook登錄一個可行的解決方案。

首先下 依賴性{......

compile 'com.facebook.android:facebook-android-sdk:4.1.0'} 然後同步搖籃.... 添加上的build.gradle(模塊的應用程序)的依賴性之後,在Android清單執行以下操作變化: -

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/app_id"/> //write the app_id u have generated in res/values/strings.xml folder. 
<provider android:authorities="com.facebook.app.FacebookContentProvider456579934439214" 
       android:name="com.facebook.FacebookContentProvider" 
       android:exported="true" /> 

<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" /> 

之後寫在烏爾MainActivity類別下面的代碼:

public class MainActivity extends ActionBarActivity { 
LoginButton loginButton; 
CallbackManager callbackManager; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    callbackManager = CallbackManager.Factory.create(); 

    setContentView(R.layout.activity_main); 

    loginButton = (LoginButton) findViewById(R.id.login_button); 
    loginButton.setReadPermissions("email", "user_likes", "user_friends"); 

    loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      //callback registration 

      LoginManager.getInstance().registerCallback(callbackManager, 
        new FacebookCallback<LoginResult>() { 
         @Override 
         public void onSuccess(LoginResult loginResult) { 
          // App code 

          LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "user_friends")); 
          Log.e("-->", Arrays.asList("public_profile", "user_friends").toString()); 
          Toast.makeText(getApplication(), "success", Toast.LENGTH_SHORT).show(); 


         } 

         @Override 
         public void onCancel() { 
          // App code 
          Toast.makeText(getApplication(),"fail",Toast.LENGTH_SHORT).show(); 
         } 

         @Override 
         public void onError(FacebookException exception) { 
          // App code 
          Toast.makeText(getApplication(),"error",Toast.LENGTH_SHORT).show(); 
         } 
        }); 
     } 
    }); 

} 



@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 
} 

}

我activity_main.xml中的文件如下: -

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      tools:context=".MainActivity"> 

<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_marginTop="30dp" 
    android:layout_marginBottom="30dp" /> 

U可以自定義按鈕,按要求

+1

謝謝你.....你回答的工作就像一個閃閃發光的明星。 。 – Rosaline

+1

歡迎@Rosaline –

+0

如何使用此示例獲取用戶名? –

4

,如果你什麼自定義登錄按鈕然後

在創建meathod

FacebookSdk.sdkInitialize(this.getApplicationContext()); 

    callbackManager = CallbackManager.Factory.create(); // declare it globally "CallbackManager callbackManager " 

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>(){ 

     @Override 
     public void onSuccess(LoginResult result) 
     { 
      // TODO Auto-generated method stub 
      Log.d("LoginManager", "On Success"); 
     } 

     @Override 
     public void onError(FacebookException error) { 
      // TODO Auto-generated method stub 
      Log.d("LoginManager", "On Error"); 
     } 

     @Override 
     public void onCancel() { 
      // TODO Auto-generated method stub 
      Log.d("LoginManager", "On Cancel"); 
     } 
    }); 

上的任意鍵點擊調用這個

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

onActivity結果

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
相關問題