Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中使用sdk 4.1.0登录facebook?_Android_Facebook_Sdk_Facebook Login - Fatal编程技术网

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

如何在android中使用sdk 4.1.0登录facebook?,android,facebook,sdk,facebook-login,Android,Facebook,Sdk,Facebook Login,[我正在为我的应用程序的登录页面编写代码。我已经使用给定的电子邮件和密码成功登录,但在编写facebook登录代码时遇到问题。我已经检查了此问题 但我仍然在按照说明运行代码时出错。我是android开发新手……因此任何适当的帮助都是值得称赞的。提前感谢。]如果您需要自定义登录按钮 在创建方法中 FacebookSdk.sdkInitialize(this.getApplicationContext()); callbackManager = CallbackManager.Factor

[我正在为我的应用程序的登录页面编写代码。我已经使用给定的电子邮件和密码成功登录,但在编写facebook登录代码时遇到问题。我已经检查了此问题


但我仍然在按照说明运行代码时出错。我是android开发新手……因此任何适当的帮助都是值得称赞的。提前感谢。]

如果您需要自定义登录按钮

在创建方法中

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");
        }
    });
非激活结果

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
在这里,我提供了一个使用sdk4登录facebook的有效解决方案

首先,在下添加对build.gradle(模块应用程序)的依赖项 依赖项{

编译'com.facebook.android:facebook android sdk:4.1.0'
} 然后同步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" />

//在res/values/strings.xml文件夹中写入您生成的应用程序id。
在此之后,在您的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);
}
公共类MainActivity扩展了ActionBarActivity{
登录按钮登录按钮;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(this.getApplicationContext());
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.activity_main);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“电子邮件”、“用户喜欢”、“用户朋友”);
loginButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//回调注册
LoginManager.getInstance().registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
//应用程序代码
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this、Arrays.asList(“public\u profile”、“user\u friends”);
Log.e(“-->”,Arrays.asList(“public_profile”,“user_friends”).toString();
Toast.makeText(getApplication(),“success”,Toast.LENGTH_SHORT.show();
}
@凌驾
公开作废{
//应用程序代码
Toast.makeText(getApplication(),“fail”,Toast.LENGTH_SHORT.show();
}
@凌驾
public void onError(facebook异常){
//应用程序代码
Toast.makeText(getApplication(),“error”,Toast.LENGTH_SHORT).show();
}
});
}
});
}
@凌驾
受保护的void onActivityResult(最终int请求代码、最终int结果代码、最终意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
}

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


您可以根据要求自定义按钮

如何使用此示例获取用户名?问题是什么?为我解决了问题firebase ui auth library。您的回答是正确的我的问题完全是由于其他原因造成的。
<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" />