热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidKotlin-Facebook登录-获取用户数据

如何解决《AndroidKotlin-Facebook登录-获取用户数据》经验,为你挑选了1个好方法。

我是android开发的新手,已经搜索了数小时,却没有找到Facebook登录后如何获取该死用户数据的方法!

这是代码:

private var callbackManager: CallbackManager? = null

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_fb_connect)




        // Login
        callbackManager = CallbackManager.Factory.create()
        LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "email"))
        LoginManager.getInstance().registerCallback(callbackManager,
                object : FacebookCallback {
                    override fun onSuccess(loginResult: LoginResult) {
                        Log.d("letsSee", "Facebook token: " + loginResult.accessToken.token)

                    }

                    override fun onCancel() {
                        Log.d("letsSee", "Facebook onCancel.")

                    }

                    override fun onError(error: FacebookException) {
                        Log.d("letsSee", "Facebook onError.")

                    }
                })

}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    callbackManager?.onActivityResult(requestCode, resultCode, data)

    Log.d("letsSee", "malsehnnnnnn: " + data)
}

Log.d("letsSee", "malsehnnnnnn: " + data)底部得到:malsehnnnnnn: Intent { (has extras) }

该死的数据在哪里????Facebook文档很奇怪而且很糟糕!



1> Bhavesh Rang..:

发送GraphRequest usign accessToken,您将获得所请求字段的json。

更新为Kotlin

LoginManager.getInstance().registerCallback(callbackManager, object : FacebookCallback {
        override fun onSuccess(loginResult: LoginResult) {
            Logger.d("FBLOGIN", loginResult.accessToken.token.toString())
            Logger.d("FBLOGIN", loginResult.recentlyDeniedPermissions.toString())
            Logger.d("FBLOGIN", loginResult.recentlyGrantedPermissions.toString())


            val request = GraphRequest.newMeRequest(loginResult.accessToken) { `object`, response ->
                try {
                    //here is the data that you want
                    Logger.d("FBLOGIN_JSON_RES", `object`.toString())

                    if (`object`.has("id")) {
                        handleSignInResultFacebook(`object`)
                    } else {
                        Logger.e("FBLOGIN_FAILD", `object`.toString())
                    }

                } catch (e: Exception) {
                    e.printStackTrace()
                    dismissDialogLogin()
                }
            }

            val parameters = Bundle()
            parameters.putString("fields", "name,email,id,picture.type(large)")
            request.parameters = parameters
            request.executeAsync()

        }

        override fun onCancel() {
            Logger.e("FBLOGIN_FAILD", "Cancel")
        }

        override fun onError(error: FacebookException) {
            Logger.e("FBLOGIN_FAILD", "ERROR", error)
        }
    })

旧答案

这是为我工作的java代码

    LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Logger.d("FBLOGIN", String.valueOf(loginResult.getAccessToken().getToken()));
            Logger.d("FBLOGIN", String.valueOf(loginResult.getRecentlyDeniedPermissions().toString()));
            Logger.d("FBLOGIN", String.valueOf(loginResult.getRecentlyGrantedPermissions().toString()));


            final GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    try {
                        //here is the data that you want
                        Logger.d("FBLOGIN_JSON_RES", String.valueOf(object));

                        if (object.has("id")) {
                            handleSignInResultFacebook(object);
                        } else {
                            Logger.e("FBLOGIN_FAILD", String.valueOf(object));
                        }

                    } catch (Exception e) {
                        e.printStackTrace();
                        dismissDialogLogin();
                    }
                }
            });

            final Bundle parameters = new Bundle();
            parameters.putString("fields", "name,email,id,picture.type(large)");
            request.setParameters(parameters);
            request.executeAsync();

        }

        @Override
        public void onCancel() {
            Logger.e("FBLOGIN_FAILD", "Cancel");
        }

        @Override
        public void onError(FacebookException error) {
            Logger.e("FBLOGIN_FAILD", "ERROR", error);
        }
    });

转换成科特林


推荐阅读
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • android 触屏处理流程,android触摸事件处理流程 ? FOOKWOOD「建议收藏」
    android触屏处理流程,android触摸事件处理流程?FOOKWOOD「建议收藏」最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到A ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 今日份分享:Flutter自定义之旋转木马
    今日份分享:Flutter自定义之旋转木马-先上图,带你回到童年时光:效果分析子布局按照圆形顺序放置且平分角度子布局旋转、支持手势滑动旋转、快速滑动抬手继续旋转、自动旋转支持X轴旋 ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
author-avatar
yangxin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有