图形API没有返回用户的电子邮件ID [英] Graph api is not returning user email id

查看:90
本文介绍了图形API没有返回用户的电子邮件ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

int此code GraphUser没有返回电子邮件ID和联系号码,请帮助阅读的电子邮件地址迫切,请帮助我 在此先感谢

code

  @覆盖
    公共无效的onSaveInstanceState(包outState){
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }

    私人无效onSessionStateChange(会话的会话,SessionState会状态,例外的例外){
        如果(state.isOpened()){
            // userInfoTextView.setVisibility(View.VISIBLE);

                //请求用户数据,并显示结果
                Request.executeMeRequestAsync(会话,新Request.GraphUserCallback(){

                    @覆盖
                    公共无效onCompleted(GraphUser用户,响应响应){
                        如果(用户!= NULL){
                            //显示分析用户信息

                        字符串email =(字符串)response.getGraphObject()的getProperty(电子邮件)。

                            的System.out.println(yahooooooooooo+电子邮件);
                            buildUserInfoDisplay(用户);
                        }
                    }
                });
        }否则如果(state.isClosed()){
            Log.i(TAG注销...);
        }
    }

    私人字符串buildUserInfoDisplay(GraphUser用户){
        StringBuilder的用户信息=新的StringBuilder();



        //例:类型访问(名)
        无需特殊权限 -  //
        userInfo.append(的String.Format(名称:%s \ñ\ N,
            user.getName()));

        //例:类型访问(生日)
        //  - 需要user_birthday许可
        userInfo.append(的String.Format(生日:%S \ñ\ N,
            user.getBirthday()));


        userInfo.append(的String.Format(生日:%S \ñ\ N,
                user.getBirthday()));


        userInfo.append(的String.Format(性别:%S \ñ\ N,
                user.getProperty(性别)));

        userInfo.append(的String.Format(Iddddddd:%S \ñ\ N,
                user.getId()));
        //例:部分类型的访问,以位置字段,
        //名称键(位置)
        //  - 需要user_location许可
        userInfo.append(的String.Format(位置:%S \ñ\ N,
            。user.getLocation()的getProperty(名字)));

        //例:通过属性名访问(区域)
        无需特殊权限 -  //
        userInfo.append(的String.Format(区域设置:%S \ñ\ N,
            user.getProperty(区域设置)));
        返回userInfo.toString();
    }
 

解决方案

在默认情况下,你不会得到的电子邮件,电子邮件必须指定权限

  Session.StatusCallback statusCallback =新Session.StatusCallback()
        {

            @覆盖
            公共无效呼叫(会话的会话,SessionState会状态,例外的例外)
            {
                如果(session.isOpened())
                {
                    Request.executeMeRequestAsync(会话,新Request.GraphUserCallback()
                    {

                        @覆盖
                        公共无效onCompleted(GraphUser用户,响应响应)
                        {

                            如果(用户!= NULL)
                            {
                                尝试
                                {
                                    的System.out.println(图内的Json+ user.getInnerJSONObject());
                                    字符串email = user.getInnerJSONObject()的getString(电子邮件)。
                                }
                             }
                         }
                     }
                 }
            }

YourActivityName.openActiveSession(这一点,真,statusCallback);
 

这是我们的 openActiveSession()在这里我们指定的权限

 私有静态会话openActiveSession(活动活动,布尔allowLoginUI,Session.StatusCallback statusCallback)
    {
        OpenRequest openRequest =新OpenRequest(活动);
        openRequest.setPermissions(Arrays.asList(user_birthday,电子邮件));
        openRequest.setCallback(statusCallback);

        会话会话=新Session.Builder(活动).build();

        如果(SessionState.CREATED_TOKEN_LOADED.equals(session.getState())|| allowLoginUI)
        {
            Session.setActiveSession(会议);
            session.openForRead(openRequest);

            返回会议;
        }

        返回null;
    }
 

和里面的 onActivityResult()不要忘了做

 如果(Session.getActiveSession()!= NULL)
        {
            Session.getActiveSession()onActivityResult(这一点,要求code,因此code,数据)。
        }
 

int this code GraphUser is not returning email-id and contact number please help to read the email address it is urgent please help me thanks in advance

CODE

 @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }

    private void onSessionStateChange(Session session, SessionState state, Exception exception) {
        if (state.isOpened()) {
            // userInfoTextView.setVisibility(View.VISIBLE);

                // Request user data and show the results
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            // Display the parsed user info

                        String email=   (String) response.getGraphObject().getProperty("email");

                            System.out.println("yahooooooooooo  "+email);
                            buildUserInfoDisplay(user);
                        }
                    }
                });
        } else if (state.isClosed()) {
            Log.i(TAG, "Logged out...");
        }
    }

    private String buildUserInfoDisplay(GraphUser user) {
        StringBuilder userInfo = new StringBuilder("");



        // Example: typed access (name)
        // - no special permissions required
        userInfo.append(String.format("Name: %s\n\n", 
            user.getName()));

        // Example: typed access (birthday)
        // - requires user_birthday permission
        userInfo.append(String.format("Birthday: %s\n\n", 
            user.getBirthday()));


        userInfo.append(String.format("Birthday: %s\n\n", 
                user.getBirthday()));


        userInfo.append(String.format("Gender: %s\n\n", 
                user.getProperty("gender")));

        userInfo.append(String.format("Iddddddd: %s\n\n", 
                user.getId()));
        // Example: partially typed access, to location field,
        // name key (location)
        // - requires user_location permission
        userInfo.append(String.format("Location: %s\n\n", 
            user.getLocation().getProperty("name")));

        // Example: access via property name (locale)
        // - no special permissions required
        userInfo.append(String.format("Locale: %s\n\n", 
            user.getProperty("locale")));
        return userInfo.toString();
    }

解决方案

By default you won't get the email, for email you have to specify permission

Session.StatusCallback statusCallback = new Session.StatusCallback() 
        {

            @Override
            public void call(Session session, SessionState state, Exception exception) 
            {
                if(session.isOpened())
                {
                    Request.executeMeRequestAsync(session, new Request.GraphUserCallback() 
                    {

                        @Override
                        public void onCompleted(GraphUser user, Response response) 
                        {

                            if(user != null)
                            {
                                try
                                {
                                    System.out.println("Graph Inner Json"+user.getInnerJSONObject());
                                    String email = user.getInnerJSONObject().getString("email");
                                }
                             }
                         }
                     }
                 }
            }

YourActivityName.openActiveSession(this, true, statusCallback);

This is our openActiveSession() where we specify permissions

private static Session openActiveSession(Activity activity, boolean allowLoginUI, Session.StatusCallback statusCallback)
    {
        OpenRequest openRequest = new OpenRequest(activity);
        openRequest.setPermissions(Arrays.asList("user_birthday", "email"));
        openRequest.setCallback(statusCallback);

        Session session = new Session.Builder(activity).build();

        if(SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI)
        {
            Session.setActiveSession(session);
            session.openForRead(openRequest);

            return session;
        }

        return null;
    }

and inside onActivityResult() don't forget to do

if(Session.getActiveSession() != null)
        {
            Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
        }

这篇关于图形API没有返回用户的电子邮件ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆