簡體   English   中英

如何在android中使用sdk 4.1.0登錄facebook?

[英]How to login facebook using sdk 4.1.0 in android?

[我正在為我的應用程序編寫我的登錄頁面的代碼。我已經使用給定的電子郵件和密碼使我的登錄成功但是我在編寫用於登錄facebook的代碼時遇到了問題。我已經檢查了這個https: //developers.facebook.com/docs/facebook-login/android/v2.3

但是我仍然按照說明運行我的代碼時遇到錯誤。我是android開發的新手......所以任何適當的幫助都會值得稱贊。提前謝謝。] 1

如果你是什么customlogin按鈕然后

在創造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);
    }

在這里,我用sdk4為facebook登錄提供了一個有效的解決方案。

首先在依賴項下添加對build.gradle(Module app)的依賴{......

compile 'com.facebook.android:facebook-android-sdk:4.1.0' }然后同步Gradle ....此后,在Android Manifest中進行以下更改: -

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

您可以根據要求自定義按鈕

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM