在android中使用facebook登录[重复]

Posted

技术标签:

【中文标题】在android中使用facebook登录[重复]【英文标题】:Login with facebook in android [duplicate] 【发布时间】:2017-05-06 07:04:27 【问题描述】:

我想在 android 中使用 facebook 实现登录。安装或未安装 facebook 应用程序时,它运行良好。简而言之,它在 facebook 应用程序和浏览器中运行良好,但如果安装了 facebook lite 而不是 facebook 原始应用程序,则有时它无法运行并且没有返回结果。那么如果安装了facebook lite,是否可以在浏览器中使用facebook打开登录?

【问题讨论】:

【参考方案1】:

请参考this 链接。在此链接中为您提供最好的教程,并且它可以与 facebook 应用程序一起使用,而无需 facebook 应用程序。我从该链接进行了 facebook 集成

只需在你的 build.gradle 中添加这个 gradle compile 'com.facebook.android:facebook-android-sdk:4.+' 无需下载 facebook sdk

【讨论】:

请查看我的更新答案 谢谢@Bhupat Bheda。它适用于 facebook 应用程序和浏览器,但不适用于 facebook lite 应用程序。【参考方案2】:
    下载 Android SDK 获取 Facebook 应用 ID,包括 SDK, 并将密钥哈希添加到您的个人资料中 为您的应用启用单点登录

请阅读文档

https://developers.facebook.com/docs/facebook-login/android

【讨论】:

我已经完成了所有这一步,但你不明白我的问题。它适用于 facebook 应用程序和浏览器,但不适用于 facebook lite 应用程序。 你要给用户详细解释一下!【参考方案3】:

您使用的是 facebook sdk 4.0,这与 facebook lite 有问题。

编译这个sdk:compile 'com.facebook.android:facebook-android-sdk:[4,5)'

并将其添加到 gradle 中:

 jcenter 
            url "http://jcenter.bintray.com/"
        

有关更多信息,请正确查看文档。

【讨论】:

感谢@Sagar Chavada 理解我的问题。我将在我的代码中使用它并为您提供更新。我希望它会起作用。 我试过了,但还是不行。【参考方案4】:
**Process Login With Facebook**
**Working on Play Store** 

**Link     
     - https://play.google.com/store/apps/details?id=com.codecube.airbucks&hl=en    
**
**Step 1** Registered your new app? If you didn't, go to https://developers.facebook.com/apps/, click Add a New App in the top right and follow the instructions. **step by step**

**Manifest Permission**
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

**build.Gradle Dependency**
compile 'com.facebook.android:facebook-android-sdk:4.8.0' 
    /*compile 'com.facebook.android:facebook-android-sdk:[4,5)'*/


                 <activity android:name="com.facebook.FacebookActivity"
                            android:theme="@android:style/Theme.Translucent.NoTitleBar"
                            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                            android:label="@string/app_name" />
                        <meta-data android:name="com.facebook.sdk.ApplicationName"
                            android:value="@string/app_name" />
                        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

                        <provider android:authorities="com.facebook.app.FacebookContentProvider1854328631556764"
                            android:name="com.facebook.FacebookContentProvider"
                            android:exported="true"/> 

            **Layout Xml Code**
            <com.facebook.login.widget.LoginButton
                    android:id="@+id/login_button"
                    android:layout_
                    android:layout_
                    />

            **Put own generate facebook Key in String.xml File** 
            <string name="facebook_app_id">1854328631556764</string>
                <string name="fb_login_protocol_scheme">fb1854328631556764</string>

                **MainActivity CODE**
                 protected void onCreate(Bundle savedInstanceState) 
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main1);
                        FacebookSdk.sdkInitialize(this.getApplicationContext());
                        AppEventsLogger.activateApp(this);   

                        callbackManager = CallbackManager.Factory.create();
                        fbloginButton = (LinearLayout) findViewById(R.id.facebook_button);


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

                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) 
                                        int permissionCheck = ContextCompat.checkSelfPermission(MainActivity.this,
                                                android.Manifest.permission.CAMERA);
                                        if (permissionCheck == PackageManager.PERMISSION_GRANTED) 
                                            //showing dialog to select image
                                            callFacebook();
                                            Log.e("permission", "granted");
                                         else 
                                            ActivityCompat.requestPermissions(MainActivity.this,
                                                    new String[]android.Manifest.permission.READ_EXTERNAL_STORAGE,
                                                            android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, 1);
                                        
                                     else 
                                        callFacebook();
                                    
                            
                        );
                    

                 **CAllOnFAcebook**
                    public void callFacebook() 

                        callbackManager = CallbackManager.Factory.create();

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

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

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

                            @Override
                            public void onSuccess(LoginResult loginResult) 
                                Log.e("keshav","onSuccess called ");
                                GraphRequest request = GraphRequest.newMeRequest(
                                        loginResult.getAccessToken(),
                                        new GraphRequest.GraphJSONObjectCallback() 
                                            @Override
                                            public void onCompleted(
                                                    JSONObject object,
                                                    GraphResponse response) 
                                                // Application code
                                                Log.v("LoginActivityfacebook", response.toString());

                                                try 
                                                    JSONObject data = response.getJSONObject();
                                                    facebookName = data.getString("name");
                                                    facebookEmail = data.getString("email");
                                                    facebookId = data.getString("id");
                                                    facebookLink = data.getString("link");
                                                    facebookLink = facebookLink.replace("https://www.facebook.com/app_scoped_user_id/", "");
                                                    facebookLink = facebookLink.replace("/", "");
                                                    Log.e("profilelink", "" + facebookLink);
                                                    facebookLink = "https://graph.facebook.com/" + facebookLink + "/picture";

                                                    Log.e("facebookName", "is  ->  " + facebookName);
                                                    Log.e("facebookEmail", "is  ->  " + facebookEmail);
                                                    Log.e("facebookId", "is  ->  " + facebookId);
                                                    Log.e("facebookLink", "is  ->  " + facebookLink);


                                                        Log.e("Keshav","Suceesfully Login "+facebookName);



                                                     else 
                                                        CommonMethod.showAlert("Intenet Connectivity Failure", MainActivity.this);
                                                    
                                                 catch (JSONException e) 
                                                    // TODO Auto-generated catch block
                                                    e.printStackTrace();
                                                
                                            
                                        );
                                Bundle parameters = new Bundle();
                                parameters.putString("fields", "id,name,email,gender, birthday,link");
                                request.setParameters(parameters);
                                request.executeAsync();
                            

                            @Override
                            public void onCancel() 
                                // App code
                                Log.i(TAG, "cancelTriggered");
                            

                            @Override
                            public void onError(FacebookException exception) 
                                // App code
                                Log.i(TAG, "errorTriggered");
                            
                        );
                        LoginManager.getInstance().logOut();                //  TODO Add Me Using this previous facebook login id password logout
                    


                **Process Login With Facebook**
            **Working on Play Store** 

        **Link https://play.google.com/store/apps/details?id=com.codecube.airbucks&hl=en**

【讨论】:

以上是关于在android中使用facebook登录[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android facebook向朋友发送挑战/应用请求[重复]

Facebook API:如何在facebook中获取登录用户的关注者列表[重复]

任何示例显示如何使用自己的按钮或 Facebook 按钮在 Android 中使用 Facebook SDK 4.0 登录?

facebook修改keyhash后,facebooke登录时候在验证界面重复弹出空白屏

在 Android 中单击 Facebook 登录按钮后未显示 Facebook 身份验证对话框

Android Webview Facebook 登录