获取用户名和性别从Facebook的机器人机器人、用户名、性别、Facebook

2023-09-05 08:19:36 作者:时光叫我别念他 °

这是我如何检索存储在共享preference的信息,后来我比较的用户名和密码是否存在。如果用户登录时,我能够证明其他活动。

This is how I retrieve the information stored in shared preference and later am comparing whether username and password exists. If user is logged in I am able to show another activity.

共享preferences设置= getShared preferences(logindetails,0​​);。

SharedPreferences settings = getSharedPreferences("logindetails", 0);

    String username = settings.getString("username", "");


    String password = settings.getString("password", "");

但现在我试图获取用户,并显示在我的活动中的用户名和性别。

But now I am trying to retrieve the username and gender of the user and display in my activity.

我试图解决这个问题,但还没有找到令人信服的结果。

I am trying to solve this, but not yet found the convincing result.

任何一个可以帮助我走出我的要求?

Can any one help me to get out of my requirement?

注:我也看到了Facebook的开发者页面的文件

Note: I am also seeing the documents of Facebook developer's page

这是在code我用来检索用户数据,并显示在另一个活动。有什么问题,现在面临的布局是从Facebook是paresed响应之前加载。我怀疑这是因为使用mAsyncRunner的,因为它需要对自己的控制。我试图找出是藿解析它加载的布局了。

This is the code I am using to retrieve the user data and display in another activity. What problem am facing is the layout is loaded before the response from the facebook is paresed. I suspect it is because of the use of mAsyncRunner as it takes the control on its own. What I am trying to find out is hwo to parse it before the layout is loaded.

public class FaceBookRetrieval extends Activity{


this.facebookConnector = new FacebookConnect(APP_ID, this,
                getApplicationContext(), PERMS);

}

public class FacebookConnect {

    public FacebookConnect fb = null;
    private Facebook facebook = null;
    private Context context;
    private String[] permissions;
    public static final String TAG = "FACEBOOK";
    private AsyncFacebookRunner mAsyncRunner;
    private SharedPreferences sharedPrefs;
    private ProgressBar pb;
    public  String fbName, fbGender;
    private Activity activity;
    public String check = "false";
    private SessionListener mSessionListener = new SessionListener();;

    public FacebookConnect(String appId, Activity activity, Context context,
            String[] permissions) {
        this.facebook = new Facebook(appId);
        mAsyncRunner = new AsyncFacebookRunner(facebook);
        SessionStore.restore(facebook, context);
        SessionEvents.addAuthListener(mSessionListener);
        SessionEvents.addLogoutListener(mSessionListener);

        this.context = context;
        this.permissions = permissions;
        this.activity = activity;
    }

    public void login() {
        if (!facebook.isSessionValid()) {
            facebook.authorize(this.activity, this.permissions,
                    new LoginDialogListener());
        }
    }

    public void getID() {

            login();


        return;
    }

    public boolean isSession() {
        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
        String access_token = sharedPrefs.getString("access_token", "x");
        Long expires = sharedPrefs.getLong("access_expires", -1);
        Log.d(TAG, access_token);
        facebook.setAccessToken(null);
        facebook.setAccessExpires(-1);

        if (access_token != null && expires != -1) {
//          facebook.setAccessToken(access_token);
//          facebook.setAccessExpires(expires);



        }

        return facebook.isSessionValid();
    }



    // request the facebook to provide the response and then parse the response to 
    // obtain username and gender
    private class IDRequestListener implements RequestListener {

        @Override
        public void onComplete(String response, Object state) {
            try {

                Log.d(TAG, "Response: " + response.toString());
                JSONObject json = Util.parseJson(response);
                fbGender = json.getString("gender");
                fbName = json.getString("name");
                check = "true";

            } catch (JSONException e) {
                Log.d(TAG, "JSONException: " + e.getMessage());
            } catch (FacebookError e) {
                Log.d(TAG, "FacebookError: " + e.getMessage());
            }
            Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
            FacebookConnect.this.runOnUiThread(new Runnable() {
                public void run() {
                    pb.setVisibility(ProgressBar.VISIBLE);
                }
            });
            return ;
        }

        @Override
        public void onIOException(IOException e, Object state) {
            Log.d(TAG, "IOException: " + e.getMessage());
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
            Log.d(TAG, "FacebookError: " + e.getMessage());
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                Object state) {

        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                Object state) {

        }

    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        facebook.authorizeCallback(requestCode, resultCode, data);
    }

    public void runOnUiThread(Runnable runnable) {
    }



    private class LoginDialogListener implements DialogListener {

        @Override
        public void onComplete(Bundle values) {

            String token = facebook.getAccessToken();
            long token_expires = facebook.getAccessExpires();
            Log.d(TAG, "AccessToken: " + token);
            Log.d(TAG, "AccessExpires: " + token_expires);
            sharedPrefs = PreferenceManager
                    .getDefaultSharedPreferences(context);
            sharedPrefs.edit().putLong("access_expires", token_expires).clear()
                    .commit();
            sharedPrefs.edit().putString("access_token", token).clear().commit();
            mAsyncRunner.request("me", new IDRequestListener());
            Toast.makeText(context, "You are logged in", Toast.LENGTH_SHORT).show();

            return;
        }

        @Override
        public void onCancel() {
            Log.d(TAG, "OnCancel");
        }

        @Override
        public void onFacebookError(FacebookError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(DialogError e) {
            // TODO Auto-generated method stub

        }
    }

    private class SessionListener implements AuthListener, LogoutListener {

        public void onAuthSucceed() {
            SessionStore.save(facebook, context);
        }

        public void onAuthFail(String error) {
        }

        public void onLogoutBegin() {
        }

        public void onLogoutFinish() {
            SessionStore.clear(context);
        }
    }

    public Facebook getFacebook() {
        return this.facebook;
    }


}

谁能帮帮我吗?

Can anybody please help me?

推荐答案

最后我能解决我的问题我自己。

Finally am able to solve my problem myself.

private static final String[] PERMS = new String[] { "publish_stream" };
----->


this.facebookConnector = new FacebookConnect(APP_ID, this, getApplicationContext(), PERMS);

---->

JSONObject json = Util.parseJson(response);


fbGender = json.getString("gender");


fbName = json.getString("name");

这是我的一块code我如何提取数据。

This is a piece of my code how i extracted the data

 
精彩推荐
图片推荐