精华内容
下载资源
问答
  • Facebook登录

    千次阅读 2018-10-02 12:32:47
    Facebook登录接入前提: 拥有Facebook账号 拥有Facebook开发者账号 登录Facebook开发者网站创建应用 填写相关信息 创建完成后添加登录功能 选择接入的平台,这里用的是Android,所以选择Android 根据官方提示...

    本文章仅作为个人笔记

    Facebook网站
    Facebook开发者网站
    • Facebook登录接入前提:
      • 拥有Facebook账号
      • 拥有Facebook开发者账号
    • 登录Facebook开发者网站创建应用
      image.png
    • 填写相关信息
    • 创建完成后添加登录功能
    • 选择接入的平台,这里用的是Android,所以选择Android
    • 根据官方提示完成设置及接入(如果应用还没有上线也没有关系,直接点击确认即可,第一次登录成功后开发者界面左侧的登录会显示为成功状态)
      image.png
    • 不得不为Facebok点赞,在接入文档方面及本地化方面比Google等国外厂商做的出色太多了。
    • 最后记得把开发状态改为发布
      image.png
    展开全文
  • FaceBook登录

    千次阅读 2017-09-04 11:32:30
    下载 Facebook 应用 https://play.google.com/store/apps/details?id=com.facebook.katana B.创建开发者帐户 C.下载 Android 版 FaceBook SDK D.获得 Facebook 应用编号、添加 SDK、以及向资料页...


     1.前提条件

    A.下载 Facebook 应用


    B.创建开发者帐户

    C.下载 Android 版 FaceBook SDK

    D.获得 Facebook 应用编号、添加 SDK、以及向资料页添加密钥散列

     2.具体操作
    Android Studio 设置

    1.前往 Android Studio | New Project(新项目)

    2.选择 API 15: Android 4.0.3 或更高版本,然后创建新项目。

    3.创建新项目后,打开 your_app | build.gradle

    4.将以下字符串添加至模块级 /app/build.gradle,放在 dependencies 之前:

    1
    repositories {
    2
      mavenCentral() 
    3
    }

    5.将配置最新版本 Facebook SDK 的编译依赖项添加到 build.gradle 文件:

    1
    dependencies { 
    2
      compile 'com.facebook.android:facebook-android-sdk:4.+'
    3
    }

    6.后向项目的字符串文件添加您的 Facebook 应用编号,并更新 Android 清单:

    1.打开 strings.xml 文件。示例路径:/app/src/main/res/values/strings.xml

    2.添加新的字符串(名称为 facebook_app_id,值为 Facebook 应用编号)。

    1
    <string name="facebook_app_id">1157936237668249</string>

    3.打开 AndroidManifest.xml

    4.将 uses-permission 元素添加到清单:

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

    5.将 meta-data 元素添加到 application 元素内:

    1
    2
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    3
     
    3,登录FaceBook开发者账号操作  生成debug.story或者 release。story
    生成秘钥的指令: 
    1
    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
    2
    base64

    1
    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
     
     4. 在代码中的操作: 

        FaceBook自带的登录按钮: 
    1
    <com.facebook.login.widget.LoginButton
    2
        android:id="@+id/login_button"
    3
        android:layout_width="wrap_content"
    4
        android:layout_height="wrap_content"
    5
        android:layout_gravity="center_horizontal"
    6
        android:layout_marginTop="30dp"
    7
        android:layout_marginBottom="30dp" />  
    8
    来源: https://developers.facebook.com/docs/facebook-login/android
    9
    在MainActivity中: 

    loginButton为FaceBook自带的登录按钮,loginButton1为我们自定义的FaceBook登录按钮,
    想要实现自定义登录效果,必须创建LoginManager类,调用LoginWithReadPermissions方法


    别丢了在onActivityResulet中设置的回调 : 

     

     4,测试时候,别忘了在FaceBook开发者账号的  应用审核 和 设置中打开相关设置

    设置中相关设置: 

     
    应用审核 中的相关设置:

     
    5.获取用户信息 ,在onSuccess方法中

    AccessToken source = loginResult.getAccessToken();
    
    //通过Profile类 获取用户信息
    
    //用户姓名
    String name = Profile.getCurrentProfile().getName();
    //用户图像
    Uri profilePictureUri = Profile.getCurrentProfile().getProfilePictureUri(50, 50);








     1.前提条件

    A.下载 Facebook 应用


    B.创建开发者帐户

    C.下载 Android 版 FaceBook SDK

    D.获得 Facebook 应用编号、添加 SDK、以及向资料页添加密钥散列

     2.具体操作
    Android Studio 设置

    1.前往 Android Studio | New Project(新项目)

    2.选择 API 15: Android 4.0.3 或更高版本,然后创建新项目。

    3.创建新项目后,打开 your_app | build.gradle

    4.将以下字符串添加至模块级 /app/build.gradle,放在 dependencies 之前:

    1
    repositories {
    2
      mavenCentral() 
    3
    }

    5.将配置最新版本 Facebook SDK 的编译依赖项添加到 build.gradle 文件:

    1
    dependencies { 
    2
      compile 'com.facebook.android:facebook-android-sdk:4.+'
    3
    }

    6.后向项目的字符串文件添加您的 Facebook 应用编号,并更新 Android 清单:

    1.打开 strings.xml 文件。示例路径:/app/src/main/res/values/strings.xml

    2.添加新的字符串(名称为 facebook_app_id,值为 Facebook 应用编号)。

    1
    <string name="facebook_app_id">1157936237668249</string>

    3.打开 AndroidManifest.xml

    4.将 uses-permission 元素添加到清单:

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

    5.将 meta-data 元素添加到 application 元素内:

    1
    2
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    3
     
    3,登录FaceBook开发者账号操作  生成debug.story或者 release。story
    生成秘钥的指令: 
    1
    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
    2
    base64

    1
    keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
     
     4. 在代码中的操作: 

        FaceBook自带的登录按钮: 
    1
    <com.facebook.login.widget.LoginButton
    2
        android:id="@+id/login_button"
    3
        android:layout_width="wrap_content"
    4
        android:layout_height="wrap_content"
    5
        android:layout_gravity="center_horizontal"
    6
        android:layout_marginTop="30dp"
    7
        android:layout_marginBottom="30dp" />  
    8
    来源: https://developers.facebook.com/docs/facebook-login/android
    9
    在MainActivity中: 

    loginButton为FaceBook自带的登录按钮,loginButton1为我们自定义的FaceBook登录按钮,
    想要实现自定义登录效果,必须创建LoginManager类,调用LoginWithReadPermissions方法


    别丢了在onActivityResulet中设置的回调 : 

     

     4,测试时候,别忘了在FaceBook开发者账号的  应用审核 和 设置中打开相关设置

    设置中相关设置: 

     
    应用审核 中的相关设置:

     
    5.获取用户信息 ,在onSuccess方法中

    AccessToken source = loginResult.getAccessToken();
    
    //通过Profile类 获取用户信息
    
    //用户姓名
    String name = Profile.getCurrentProfile().getName();
    //用户图像
    Uri profilePictureUri = Profile.getCurrentProfile().getProfilePictureUri(50, 50);








    展开全文
  • Facebook登录-源码

    2021-02-15 04:17:33
    Facebook登录
  • Facebook登录表单.zip

    2019-07-05 00:24:46
    Facebook登录表单是一款基于CSS3 HTML5实现的facebook登陆框效果。 Facebook登录表单演示图:
  • 透过完成常见的使用Facebook登录。 资料库(database)使用SQLite。 安装套件Flask-Login 请先确定电脑有安装 烧瓶登录 pip install flask-login 更多Flask-Login,可参考 使用Facebook登录-初步作业 请先到 ,点右...
  • Android Facebook登录

    千次阅读 2020-07-07 23:01:41
    Today we will learn how to integrate Facebook login in android applications. You must have seen Facebook login as an easier way to create account ... 今天,我们将学习如何将Facebook登录信息集成到androi...

    Today we will learn how to integrate Facebook login in android applications. You must have seen Facebook login as an easier way to create account in many applications.

    今天,我们将学习如何将Facebook登录信息集成到android应用程序中。 您一定已经将Facebook登录视为在许多应用程序中创建帐户的更简便方法。

    Android Facebook登录 (Android Facebook Login)

    Many applications use Login With Facebook to register users in their applications. For the login with Facebook to work, we must have a unique ID for our android application which communicates with the Facebook server.

    许多应用程序使用“使用Facebook登录”在其应用程序中注册用户。 为了使用Facebook登录,我们必须为与Facebook服务器通信的android应用程序使用唯一的ID。

    Let’s start with my creating a new empty Android Studio project.

    让我们从创建一个新的空Android Studio项目开始。

    Now before we write any piece of code, we need to register our application as demonstrated below.

    现在,在编写任何代码之前,我们需要注册我们的应用程序,如下所示。

    注册您的Facebook应用程序 (Registering Your Facebook Application)

    Login using your Facebook account to: https://developers.facebook.com/apps/.

    使用您的Facebook帐户登录到: https : //developers.facebook.com/apps/

    Now create a new app. And set the app name and the email id as shown in the below pic.

    现在创建一个新的应用程序。 并设置应用程序名称和电子邮件ID,如下图所示。

    Note: Facebook doesn’t allow us to set app names which contain the keyword fb/facebook etc. Hence we’d set the app name to TestTutorial. We’ll need to set up the same name in the strings.xml app_id string of our Android Studio Project.

    注意:Facebook不允许我们设置包含关键字fb / facebook等的应用程序名称。因此,我们将应用程序名称设置为TestTutorial。 我们需要在Android Studio项目的strings.xml app_id字符串中设置相同的名称。

    You shall see the dashboard in the next screen. Choose Facebook Login Setup and select the platform as Android as shown in the below images.

    您将在下一个屏幕中看到仪表板。 选择“ Facebook登录设置”,然后选择平台作为Android,如下图所示。

    android login with Facebook choose platform

    Select Android

    选择Android

    From the next screen, instead of downloading the Facebook SDK, import the SDK using the gradle dependency.
    For that, add the following dependencies in your app‘s build.gradle.

    在下一个屏幕上,而不是下载Facebook SDK,而是使用gradle依赖项导入SDK。
    为此,请在appbuild.gradle添加以下依赖build.gradle

    buildscript { 
    repositories {
    mavenCentral()
    }
    }

    Use the latest version of the SDK dependency.

    使用最新版本的SDK依赖项。

    implementation 'com.facebook.android:facebook-android-sdk:4.31.0'

    To check that the sdk is successful added in our project add the following import statements in your MainActivity.java class file as shown below. If there’s no error, the build was successful.

    要检查sdk是否成功添加到我们的项目中,请在您的MainActivity.java类文件中添加以下import语句,如下所示。 如果没有错误,则说明构建成功。

    import com.facebook.FacebookSdk;
    import com.facebook.appevents.AppEventsLogger;

    Add your Facebook App ID
    The App ID present in the Facebook developers application dashboard needs to be added in the strings.xml in our Android Studio Project.

    添加您的Facebook应用ID
    Facebook开发人员应用程序仪表板中存在的应用程序ID需要添加到我们的Android Studio项目中的strings.xml中。

    <string name="facebook_app_id">894882580618030</string>

    Enter your package name and default activity name with the fully qualified path as shown below. After saving click on Use this package name to confirm.

    android login with facebook

    S

    输入您的包名称和默认活动名称,并使用标准路径,如下所示。 保存后,单击“ 使用此程序包名称”进行确认。

    小号

    The next window asks for the setting up the key hashes. That can be done by running the following commands on mac terminal/windows cmd:

    下一个窗口要求设置密钥哈希。 这可以通过在mac terminal / windows cmd上运行以下命令来完成:

    //Mac cmd
    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
    
    //Windows cmd
    keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64

    Copy and paste the hash key in the Key hashes field below.
    You will need to provide a key hash for every device you run this application on till it is in development mode.

    将哈希键复制并粘贴到下面的“键哈希”字段中。
    您将需要为运行此应用程序的每个设备提供密钥哈希,直到它处于开发模式为止。

    Enable Single Sign-on on the next segment.

    在下一个网段上启用单一登录。

    Back to Android Studio, add the following line in strings.xml file:

    返回Android Studio,在strings.xml文件中添加以下行:

    <string name="fb_login_protocol_scheme">fb204127990172423</string>

    The number followed by fb is our APP ID above.

    后面跟着fb的数字是我们上面的APP ID。

    Enable internet permissions in the AndroidManifest.xml file by adding the following line in the manifest element.

    通过在manifest元素中添加以下行,在AndroidManifest.xml文件中启用Internet权限。

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

    Now add the following code inside the application tag in the Manifest.

    现在,在清单中的application标签内添加以下代码。

    <meta-data android:name="com.facebook.sdk.ApplicationId" 
            android:value="@string/facebook_app_id"/>
        
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>

    Let’s get onto the business end now that the registration and setup is done.
    In the following app we’ll add a login with Facebook button which on click would retrieve and display the user’s name, email and profile picture.
    We’ll be seeing how the Facebook SDK does all of this.

    现在完成注册和设置,让我们进入业务端。
    在以下应用程序中,我们将添加一个带Facebook登录的按钮,单击该按钮即可检索并显示用户的姓名,电子邮件和个人资料图片。
    我们将看到Facebook SDK如何完成所有这一切。

    Android Facebook登录项目结构 (Android Facebook Login Project Structure)

    Android Facebook集成代码 (Android Facebook Integration Code)

    The code for the activity_main.xml layout file is given below.

    下面给出了activity_main.xml布局文件的代码。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
        xmlns:app="https://schemas.android.com/apk/res-auto"
        xmlns:tools="https://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#222"
        android:gravity="center"
        android:orientation="vertical"
        tools:context="com.journaldev.loginwithfbexample.MainActivity">
    
        <ImageView
            android:id="@+id/imageView"
            android:src="@mipmap/ic_launcher"
            android:layout_width="100dp"
            android:layout_height="100dp" />
    
        <TextView
            android:id="@+id/txtUsername"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Username"
            android:padding="8dp"
            android:textColor="#FFF" />
    
        <TextView
            android:id="@+id/txtEmail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Email Address"
            android:padding="8dp"
            android:textColor="#FFF" />
    
    
        <com.facebook.login.widget.LoginButton
            android:id="@+id/login_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingTop="15dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </LinearLayout>

    We’ve changed our layout to a LinearLayout, to stack the views vertically.

    我们将布局更改为LinearLayout,以垂直堆叠视图。

    The code for the MainActivity.java class is given below.

    下面给出MainActivity.java类的代码。

    package com.journaldev.loginwithfbexample;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.facebook.AccessToken;
    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.GraphRequest;
    import com.facebook.GraphResponse;
    import com.facebook.Profile;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;
    import com.squareup.picasso.Picasso;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.util.Arrays;
    
    
    public class MainActivity extends AppCompatActivity {
    
        LoginButton loginButton;
        CallbackManager callbackManager;
        ImageView imageView;
        TextView txtUsername, txtEmail;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            loginButton = findViewById(R.id.login_button);
            imageView = findViewById(R.id.imageView);
            txtUsername = findViewById(R.id.txtUsername);
            txtEmail = findViewById(R.id.txtEmail);
    
            boolean loggedOut = AccessToken.getCurrentAccessToken() == null;
    
            if (!loggedOut) {
                Picasso.with(this).load(Profile.getCurrentProfile().getProfilePictureUri(200, 200)).into(imageView);
                Log.d("TAG", "Username is: " + Profile.getCurrentProfile().getName());
    
                //Using Graph API
                getUserProfile(AccessToken.getCurrentAccessToken());
            }
    
            loginButton.setReadPermissions(Arrays.asList("email", "public_profile"));
            callbackManager = CallbackManager.Factory.create();
    
            loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                    //loginResult.getAccessToken();
                    //loginResult.getRecentlyDeniedPermissions()
                    //loginResult.getRecentlyGrantedPermissions()
                    boolean loggedIn = AccessToken.getCurrentAccessToken() == null;
                    Log.d("API123", loggedIn + " ??");
    
                }
    
                @Override
                public void onCancel() {
                    // App code
                }
    
                @Override
                public void onError(FacebookException exception) {
                    // App code
                }
            });
    
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            callbackManager.onActivityResult(requestCode, resultCode, data);
            super.onActivityResult(requestCode, resultCode, data);
        }
    
        private void getUserProfile(AccessToken currentAccessToken) {
            GraphRequest request = GraphRequest.newMeRequest(
                    currentAccessToken, new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            Log.d("TAG", object.toString());
                            try {
                                String first_name = object.getString("first_name");
                                String last_name = object.getString("last_name");
                                String email = object.getString("email");
                                String id = object.getString("id");
                                String image_url = "https://graph.facebook.com/" + id + "/picture?type=normal";
    
                                txtUsername.setText("First Name: " + first_name + "\nLast Name: " + last_name);
                                txtEmail.setText(email);
                                Picasso.with(MainActivity.this).load(image_url).into(imageView);
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
    
                        }
                    });
    
            Bundle parameters = new Bundle();
            parameters.putString("fields", "first_name,last_name,email,id");
            request.setParameters(parameters);
            request.executeAsync();
    
        }
    }

    In the above code:

    在上面的代码中:

    • Facebook SDK auto initializes in the class. So no need to explicitly initialize it.

      Facebook SDK自动在该类中初始化。 因此,无需显式初始化它。
    • We’ve set the readPermissions to email and public_profile. Typically, Facebook provides three permissions by default: email, public_profile, user_friends. Where user_friends would display the friends using this app.

      我们已将readPermissions设置为email和public_profile。 通常,Facebook默认提供三种权限: emailpublic_profileuser_friendsuser_friends将在哪里显示使用此应用程序的朋友。
    • We instantiate a CallBackManager to invoke the register callback on LoginButton click.

      我们实例化一个CallBackManager以在LoginButton单击时调用注册回调。
    • If the result of button click is a success, LoginResult class is returned. Through it we can access the access token, granted and revoked permissions.

      如果单击按钮的结果成功,则返回LoginResult类。 通过它,我们可以访问访问令牌,已授予和已撤消的权限。
    • onActivityResult gets the response of the Login and passes it to registerCallback method.

      onActivityResult获取Login的响应,并将其传递给registerCallback方法。
    • The AccessToken is autosaved in the application data (SharedPreferences) implicitly.
      So, everytime the activity is created, we call AccessToken.getCurrentAccessToken(). If it is null, the user has to sign in again.

      AccessToken会隐式自动保存在应用程序数据(SharedPreferences)中。
      因此,每次创建活动时,我们都调用AccessToken.getCurrentAccessToken() 。 如果为空,则用户必须再次登录。
    • Similarly, if the Profile class returns the current user through which we can retrieve the profile name, picture.

      同样,如果Profile类返回当前用户,我们可以通过该用户检索配置文件名称,图片。
    • The Facebook Graph API is used to retrieve user info. It works by passing a Bundle of parameters as keys to the GraphRequest. The GraphRequest, on execution, should return the relevant info values based on the keys specified if they meet the permissions. The result is returned in the form of a JSON.

      Facebook Graph API用于检索用户信息。 它通过将一束参数作为键传递给GraphRequest来工作。 在执行GraphRequest时,如果它们满足许可权,则应基于指定的键返回相关的信息值。 结果以JSON形式返回。
    • We’ve used Picasso to display the image url in the ImageView.
      For that we need to add the following dependency:
      implementation 'com.squareup.picasso:picasso:2.5.2'

      我们已使用毕加索在ImageView中显示图像URL。
      为此,我们需要添加以下依赖项:

    Listening for Changes on LoginButton click
    AccessToken Tracker makes it possible to listen for changes on button click.
    accessToken2 is the latest access token. accessToken is the older one.

    在LoginButton上监听更改,单击
    AccessToken Tracker使得可以监听单击按钮时的更改。
    accessToken2是最新的访问令牌。 accessToken是较旧的。

    Android Facebook登录应用程序输出 (Android Facebook Login App Output)

    The output of the above application in action is given below.

    facebook integration in android app

    下面给出了上面应用程序的输出。

    Note: If you get an error like this:

    android login with fb invalid hash

    注意:如果出现这样的错误:

    Add the hash mentioned in your respective screen in the App’s Dashboard on Facebook Developers Page.
    You need to add the hash values for all such devices using the login with Facebook in development mode.

    将您在各自屏幕中提到的哈希添加到Facebook开发者页面上应用的仪表盘中。
    您需要在开发模式下使用通过Facebook登录的方式为所有此类设备添加哈希值。

    为Facebook集成添加更多权限 (Adding More Permissions for Facebook Integration)

    To add and use more permissions in your application, head on to the app review section on the dashboard in the Facebook developer page. Every new permission must be approved by Facebook first.

    要在您的应用程序中添加和使用更多权限,请转到Facebook开发人员页面上仪表板上的“应用程序查看”部分。 每个新许可都必须首先由Facebook批准。

    This brings an end to this tutorial. You can download the Android LoginWithFbExample Project from the link below. Create your own APP ID and replace it with the one in strings.xml!

    本教程到此结束。 您可以从下面的链接下载Android LoginWithFbExample项目。 创建您自己的APP ID,并将其替换为strings.xml ID!

    翻译自: https://www.journaldev.com/19718/android-facebook-login

    展开全文
  • 使用Google和Facebook登录
  • Facebook登录的组件React 入门 yarn add react-facebook-login或npm install react-facebook-login 您的应用程序还需要安装react-dom和react 。 发展 git clone ...
  • Facebook登录 :robot_face: 机器人 使用无头浏览器在Facebook App中执行Facebook登录( )。 产品特点 使用添加 :raised_hand: 速率限制 :pile_of_poo: 重试并 :horizontal_traffic_light: 断路器行为对您的要求 :...
  • Facebook登录接入Demo

    热门讨论 2015-11-13 17:20:36
    Facebook登录接入Demo
  • Facebook 登录和分享

    千次阅读 2019-01-29 16:02:59
    Facebook 登录和分享
                    因项目要求,需要实现FaceBook的登录和分享,于是 百度+google+翻墙。终于实现了!一下希望对你能起到帮助
    1.首先要申请账号,下载Sdk  因为连接国外的网站所以需要做点处理
        https://www.vcupmars.com/user/2384183/myvpn  可申请账号  然后设置Vpn(不会设置的童鞋自行百度)
       连接上了之后 进行app注册

     注意此处的hashKey  对你程序能登录和分享成功有很大关系  有两种获取方法  代码和cmd

      代码

    try {

           PackageInfo info = getPackageManager().getPackageInfo(

                   "com.baidu.pushtest", 

                   PackageManager.GET_SIGNATURES);

           for (Signature signature : info.signatures) {

               MessageDigest md = MessageDigest.getInstance("SHA");

               md.update(signature.toByteArray());

               String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);

               Log.d("KeyHash:", "KeyHash:"+KeyHash);//两次获取的不一样  此处取第一个的值

               Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show();

           }

       } catch (NameNotFoundException e) {

       } catch (NoSuchAlgorithmException e) {

       }


    CMD

    获取哈希值的方法: 
    下载 openssl-0.9.8k_WIN32  下载地址:http://download.csdn.net/detail/h7870181/5054864    
    或者直接本文最下面附件中下载 
    下载完成后,解压到C盘根目录 
    进入cmd  粘贴以下字符串,keystore默认密码为android 注意不要写错了。出来一串字符则为我们所需要的哈希值。 
    keytool -export -alias myAlias -keystore C:\Users\Administrator\.android\debug.keystore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e 


    填写完之后就是下载SDK了

     官网可以下载,可怜的我连接的VPN不能下载,只能到git上面去找了:https://github.com/facebook/facebook-android-sdk

    下载解压之后

    facebook需要导入项目用作libs  samples是官方Demo  加入libs下的两个jar包 

     自行导入修改应该是没有问题的 如有问题就是jar包导错了,自行看问题解决问题


    2.ok此时我们可以往自己项目中加入libs 并Coding了


    public class FaceBookTest extends Activity implements OnClickListener{

    private Button m_face_login;

    private Button m_face_share;

    private Button m_face_login_out;

    private UiLifecycleHelper uiHelper;

    private Session.StatusCallback statusCallback = new SessionStatusCallback();


    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.face);

    uiHelper = new UiLifecycleHelper(this, callback);

            uiHelper.onCreate(savedInstanceState);

    initlayout();

    try {

           PackageInfo info = getPackageManager().getPackageInfo(

                   "com.baidu.pushtest", 

                   PackageManager.GET_SIGNATURES);

           for (Signature signature : info.signatures) {

               MessageDigest md = MessageDigest.getInstance("SHA");

               md.update(signature.toByteArray());

               String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);

               Log.d("KeyHash:", "KeyHash:"+KeyHash);//两次获取的不一样  此处取第一个的值

               Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show();

    //            Toast.makeText(this, "FaceBook HashKey:"+Base64.encodeToString(md.digest(), Base64.DEFAULT), Toast.LENGTH_SHORT).show();

    //            System.out.println("KeyHash:"+Base64.encodeToString(md.digest(), Base64.DEFAULT));

           }

       } catch (NameNotFoundException e) {


       } catch (NoSuchAlgorithmException e) {


       }

    }

    private void initlayout(){

    m_face_login = (Button) this.findViewById(R.id.face_login);

    m_face_share = (Button) this.findViewById(R.id.face_share);

    m_face_login_out = (Button) this.findViewById(R.id.face_login_out);

    m_face_login.setOnClickListener(this);

    m_face_share.setOnClickListener(this);

    m_face_login_out.setOnClickListener(this);

    }

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    // Session.getActiveSession().onActivityResult(this, requestCode,resultCode, data);

    uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {

           @Override

           public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {

               Log.e("Activity", String.format("Error: %s", error.toString()));

           }


           @Override

           public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {

               Log.i("Activity", "Success!");

               String result = data.getString("com.facebook.platform.extra.COMPLETION_GESTURE");//cancel取消   post成功

    //            String result = FacebookDialog.getNativeDialogCompletionGesture(data);

               Log.i("Data", result);

           }

           

       });

    }


    @Override

    public void onClick(View v) {

    switch (v.getId()) {

    case R.id.face_login:

    doLogin();//在没有app的情况下进行网页授权

    break;

    case R.id.face_share:

    doShare();//在没有APP的情况下 不能分享

    break;

    case R.id.face_login_out:

    onClickLogout();

    break;


    default:

    break;

    }

    }


    private void doLogin(){

    // Session.openActiveSession(this, true, new StatusCallback() {

    // @Override

    // public void call(Session session, SessionState state, Exception exception) {

    // if(session.isOpened()){

    // // get token

    // Toast.makeText(FaceBookTest.this, session.getAccessToken(), Toast.LENGTH_SHORT).show();

    // }

    // }

    // });

     Session session = Session.getActiveSession();

           if (!session.isOpened() && !session.isClosed()) {

               session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback));

           } else {

               Session.openActiveSession(this, true, statusCallback);

           }

    }

    private class SessionStatusCallback implements Session.StatusCallback {

           @Override

           public void call(Session session, SessionState state, Exception exception) {

           if(session.isOpened()){

    // get token

    Toast.makeText(FaceBookTest.this, session.getAccessToken(), Toast.LENGTH_SHORT).show();

    }

           }

       }

    private void onClickLogout() {

           Session session = Session.getActiveSession();

           if (!session.isClosed()) {

               session.closeAndClearTokenInformation();

           }

       }

    public void doShare(){

     

           try {  

               FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)  

                       .setLink("https://developers.facebook.com/android")  

                       .setApplicationName("AndroidBaiDuPush")  

                       .setDescription("description")  

                       .setName("name")  

                       .setCaption("caption")  

                       .setPlace("place")  

                       .setPicture("http://219.232.161.206:80/data/userdata/vismam/downfile/201307/01191850Ax44.jpeg")

                       .build();  

               uiHelper.trackPendingDialogCall(shareDialog.present());  

     

           } catch (FacebookException e) {  

               Toast.makeText(getApplication(), "Facebook app is not installed", Toast.LENGTH_SHORT).show();  

           } catch (Exception e) {  

               Toast.makeText(getApplication(), "Unexpect Exception", Toast.LENGTH_SHORT).show();  

           }  

       }

     @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);    

       }    

         

       private Session.StatusCallback callback = new Session.StatusCallback() {    

           @Override    

           public void call(Session session, SessionState state,Exception exception) {  

               onSessionStateChange(session, state, exception);    

           }    

       };    

         

       private void onSessionStateChange(Session session, SessionState state,    

               Exception exception) {    

           if (state.isOpened()) {    

               Log.i("tag", "Logged in...");    

           } else if (state.isClosed()) {    

               Log.i("tag", "Logged out...");    

           }    

       } 

    }


    实现: 登录获取token 分享 退出

    doLogin();//在没有app的情况下进行网页授权

    doShare();//在没有APP的情况下 不能分享

    onClickLogout();


    app_key  需要在Strings 里面声明,直接卸载配置文件当中会找不到Key 报错!

    在运行代码的时候 前期一直不能成功,然后看提示语 发现都是hashKey的问题,此处需要多注意一下,这个hashKey和你得签名文件是有关联的,不同的eclispe或者打包工具对应不同的hashKey


    根据提示 很明白  是分享的dialog

    在.setApplicationName的时候 和注册APP的是不匹配的  自己去看申请是填写的名称 修改即可

    另外只回调初期 无论分享是成功还是取消都走onComplete 提示Success  后看源码和onComplete代码发现有data

    于是分别在取消分享和成功分享的时候查看data

    Ok此时就知道了

    String result = data.getString("com.facebook.platform.extra.COMPLETION_GESTURE");//cancel取消   post成功


    最后  注意一点的是  facebook的第三方库 要放在你得项目的同级磁盘下,不然导入库的时候会报错


    以上个人测试是通过的。如有大牛研究得更多的话,可留言告知!

    代码未整理 但应该可以明白

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • Facebook登录的React组件 背景 该组件基于找到的代码。 当我尝试在项目中使用该组件时,它不适用于React 17,并且似乎已不再维护,因此创建了这个项目。 这使我能够在项目中使用它,并将其作为学习如何构建React...
  • google登录和Facebook登录都是提供的自定义view按钮: <com.google.android.gms.common.SignInButton android:layout_width="match_parent" android:layout_height="wrap_content" android:i...
  • FaceBook登录集成

    千次阅读 2017-03-01 16:09:30
    请尊重他人的劳动成果,转载请务必注明出处.谢谢! - 注册开发者帐号 传送门 - 官方web登录介绍 传送门 - 构建前端登录页面 <!DOCTYPE html><html lang="en"> <title>FaceBook登录 <b
  • FaceBook登录接入

    万次阅读 2018-02-12 14:43:33
    官方文档Facebook登录接入Android官方文档创建应用首先去Facebook开发者平台注册一个开发者账户,这里需要翻墙,在后台添加一个自己的应用SDK集成SDK的集成方式有两种 Maven方式 在您的项目中,打开 your_app > ...
  • facebook 登录接口

    千次阅读 2015-04-17 17:36:18
    1 facebook 登录接口 php地址:http://www.krizna.com/general/login-with-facebook-using-php/
  • Android 版 Facebook 登录

    2016-09-22 15:43:00
    通过 Facebook 登录您的应用时,用户可以向应用授予权限,以便您可以检索信息或以用户的身份在 Facebook 执行操作。 如 果使用 Android 版 Facebook SDK 4.14.0 开发应用,Facebook 登录功能就会自动与 Facebook ...
  • 仿Facebook登录表单

    2018-12-04 16:28:00
    仿Facebook登录表单 在线演示 本地下载 posted @ 2018-12-04 16:28 栖息地 阅读(...) 评论(...) 编辑 收藏
  • 利用CSS3制作的登录表单的确很漂亮,我们在html5tricks网站上也分享过几款了,比如CSS3密码强度验证...今天我们要分享一款仿Facebook的登录表单,无论从外观还是功能上说,这款登录表单还是挺接近Facebook登录表单的。
  • 具有Firebase身份验证和Facebook登录的Flutter登录屏幕 使用此预构建的Flutter入门工具包,快速启动Flutter应用程序开发。 不要通过编写无聊的样板启动器代码来重新发明轮子。 直接进入动作并严格关注您的核心应用...
  • Facebook登录服务器端接入 最近研究了下facebook登陆授权,发现他的API文档真的不尽人意,有点像是新手引导,很多API参数细节都没有说明,都是一笔带过。所以,我这里写了篇文章,专门讲Facebook登录服务器端接入。...
  • Facebook 登录接入记录

    千次阅读 2017-11-12 18:03:38
    Facebook 登录接入记录
  • android接入facebook登录及分享获取apk秘钥散列的apk工具,安装后输入要查询APP的包名
  • 本文介绍google登录和google应用内购买以及facebook登录在他们后台申请对应key的介绍以及接入过程中会遇到的一些问题。 google登录和google支付移动端都需要对应的key,才能发起有效登录和支付请求。 Google登录 ...
  • 后端验证 Facebook 登录是否有效

    千次阅读 2019-10-24 13:44:46
    最近公司在做海外登录,并没有做用户名密码 手机号之类的登录,而是需要使用Facebook 登录,用户校验 账号校验Facebook 会帮我们完成,用户在... 用户授权登录后,取到用户的facebook id 和 token,然后将这个id和to...
  • 由于项目需求,需要用到facebook登录。facebook目前官方文档中,支持的是js调用faceboook sdk进行登录、注册等一系列操作,但是这里会吧facebook的APPID以及访问密钥放入前端,造成应用安全性问题,所以我们在后端...
  • unity 接入 Facebook 登录

    2019-08-07 16:08:04
    Unity 接入 Facebook 登录 Unity 接入 Facebook 登陆 使用unity sdk 到这 https://developers.facebook.com/docs/unity/ 下载unity sdk 导入到unity 点击我的应用创建应用 输入应用名称与邮箱 创建应用 然后在...
  • Android 集成google 和 facebook 登录

    千次阅读 2019-06-26 09:45:41
    最近公司项目刚好集成了google 和 facebook 登录,中间遇到了一些问题,所以记录下来. 主要问题如下: 1)如何集成google 和 facebook 登录,主要参考官方文档。 2)应用上线后,google和facebook 登录失败 ...
  • facebook登录我游戏This is the second part of my series ‘What does Facebook actually know about me?’, where I use Data Science to analyse the 7,500 files of data Facebook have about me. See Part 1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,954
精华内容 781
关键字:

facebook登录