使用facebook sdk共享首选项登录并获取有关用户的信息

库尔迪普·拉伊

我正在开发一个可以登录Facebook的应用程序。我正在尝试获取用户信息并将其发送到我的server.i正在使用sdk 4.我正在尝试使用共享首选项来保存信息,但是我不知道共享首选项。这是我的Facebook登录活动。这是启动器活动。

public class LoginActivity extends  AbsRuntimePermission {
private static final int REQUEST_Permission =10;


    private TextView info;
    private LoginButton loginButton;
    private CallbackManager callbackManager;
    private SparseIntArray mErrorString;
    private Button facebook_button;
    ProgressDialog progress;
    private String facebook_id,f_name,m_name,l_name,gender,profile_image,full_name,email_id;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //for permission in manifest file cause it is launch activity

    requestAppPermissions(new String[]{
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_COARSE_LOCATION,
            Manifest.permission.CALL_PHONE,
            Manifest.permission.INTERNET},R.string.msg,REQUEST_Permission);

    //facebook
    info = (TextView) findViewById(R.id.info);
    loginButton = (LoginButton) findViewById(R.id.login_button);
    progress = new ProgressDialog(LoginActivity.this);
    progress.setMessage(getResources().getString(R.string.please_wait_facebooklogin));
    progress.setIndeterminate(false);
    progress.setCancelable(false);

    facebook_id=f_name=m_name=l_name=gender=profile_image=full_name=email_id="";

    //facebook sdk
    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

    //register callback object for facebook result

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            progress.show();
            Profile profile = Profile.getCurrentProfile();
            if(profile != null){
                facebook_id = profile.getId();
                f_name=profile.getFirstName();
                m_name=profile.getMiddleName();
                l_name=profile.getLastName();
                profile_image=profile.getProfilePictureUri(400,400).toString();
            }
            //show Toast
            GraphRequest request =GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(),
                    new GraphRequest.GraphJSONObjectCallback(){
                        @Override
                        public void onCompleted(JSONObject object, GraphResponse response) {
                            try {
                                email_id = object.getString("email");
                                gender = object.getString("gender");
                                String Profile_name = object.getString("name");
                                long fb_id = object.getLong("id"); //use this for logout

                                //Starting a new activity using this information
                                Intent i = new Intent(LoginActivity.this, MainActivity.class);
                                i.putExtra("type", "facebook");
                                i.putExtra("Facebook_id", facebook_id);
                                i.putExtra("f_name", f_name);
                                i.putExtra("m_name", m_name);
                                i.putExtra("l_name", l_name);
                                i.putExtra("full_name", full_name);
                                i.putExtra("Profile_image", profile_image);
                                i.putExtra("email_id", email_id);
                                i.putExtra("gender", gender);

                                progress.dismiss();
                                startActivity(i);
                                finish();

                            }catch (JSONException e){
                                e.printStackTrace();
                            }
                        }
                    });
            request.executeAsync();
        }

        @Override
        public void onCancel() {
        Toast.makeText(LoginActivity.this,getResources().getString(R.string.login_canceled_facebooklogin),Toast.LENGTH_SHORT).show();
        progress.dismiss();
        }

        @Override

        public void onError(FacebookException error) {
            Toast.makeText(LoginActivity.this,getResources().getString(R.string.login_failed_facebooklogin),Toast.LENGTH_SHORT).show();
            progress.dismiss();
        }
    });

    //facebook button click
    facebook_button.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile","user_friends","email"));

        }
    });
}

private void logoutFromFacebook(){
    try{
        if(AccessToken.getCurrentAccessToken()==null){
            return;
        }

    }
}

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

@Override
public void onPermissionGranted(int requestCode) {

    //anything after permission Granted
    Toast.makeText(getApplicationContext(),"Permission granted",Toast.LENGTH_LONG).show();

}



public void goTo(View view) {
    Intent intent = new Intent(this, MainActivity.class);
    this.startActivity(intent);
}

}

捷发科技

Android SharedPreferences允许我们以键-值对的形式存储私有原始应用程序数据。有关更多详细信息,请遵循

要从共享首选项中读取内容,请使用类似以下的内容。

String dateFromSharedPreferences=getActivity().getPreferences(Context.MODE_PRIVATE);
sharedPref.getString("Username");

保存为共享首选项

    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("Username", YourUsername);
    editor.putString("Password", YourPassword);
    editor.apply();

LoginActivity要将值从传递到,MainActivity因此在MainActivityatonCreate函数中进行如下编码,以获取传递的值并在textview中显示。

((TextView)findViewById(R.id.tv1)).setText(getIntent().getExtras().getString("full_name"));
((TextView)findViewById(R.id.tv2)).setText(getIntent().getExtras().getString("email_id"));
((TextView)findViewById(R.id.tv3)).setText(getIntent().getExtras().getString("gender"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用django_facebook从Facebook获取有关用户的信息

使用Android Studio中的共享首选项存储Google登录详细信息

PHP。获取有关Facebook用户的信息

如何使用共享首选项使用户保持登录状态?

如何使用Facebook Graph API获取有关用户喜欢的组的信息

如何使用共享首选项从登录数据中获取令牌

如何在Android中使用共享首选项创建带有记住我的登录表单

使用共享首选项登录Kotlin时出错

Facebook Android SDK 4.0:newGraphPathRequest返回“必须使用活动访问令牌来查询有关当前用户的信息。”

保存有关facebook用户的信息以在另一个活动中使用

使用GitHub Java API检索有关登录用户的信息?

使用共享首选项填充ListView

使用共享首选项更改背景

使用共享首选项保存高分

我可以使用Facebook API获取有关谁在我的Facebook页面上发布的详细信息吗?

使用共享首选项在 Firebase 身份验证中登录注册

使用共享首选项登录和注册。安卓手机

要保持登录状态,请在 android studio 中使用共享首选项

如何使用github graphQL获取有关特定用户的信息?

CUPS我们使用什么命令来获取有关用户的信息?

使用 Cookie 来存储个性化信息或设置首选项:当用户登录到新设备时它是否持续存在

在unity和本机android SDK之间使用共享首选项

Flutter:使用共享首选项从 firestore 保存用户 ID 并将值检索到类中

我想使用共享的首选项在android中实现一次注册屏幕,但我无法获取以前的共享的首选项

将首选项添加到facebook sdk LoginButton

Facebook Canvas App错误:必须使用活动访问令牌来查询有关当前用户的信息

如何使用从共享首选项json文件中获取的数据的返回值作为参数

如何使用共享首选项保存从数据库获取的数据?

如何获取用户信息。使用Android Facebook SDK?