簡體   English   中英

如何從 Facebook 獲取 ParseUser 的名稱?

[英]How to get Name of ParseUser from Facebook?

我在嘗試獲取通過 Facebook 登錄的 Parse 用戶的姓名時遇到了大問題。

登錄工作正常,我可以在解析數據瀏覽器上看到用戶令牌,ParseUser.getCurrentUser 返回一個 ParseUser 等等,但我不知道我可以從 facebook 獲取用戶的姓名嗎?

到目前為止,我擁有的代碼是

ParseFacebookUtils.logIn(C_RegisterLogin.this, new LogInCallback()
{
    @Override
    public void done(ParseUser user, ParseException err)
    {
        progressdialog.dismiss();

        if (user == null)
        {
            Toast toast = Toast.makeText(getApplicationContext(), "Login via Facebook failed!", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.TOP, 0, 20);
            toast.show();
        }
        else
        {
            if (user.isNew())
            {
            }

            List args = new ArrayList<String>();
            args.add("name");
            JSONObject result = new JSONObject(ParseFacebookUtils.getSession().requestNewReadPermissions(C_RegisterLogin.this, args);
            String facebookname = result.optString("name");

            Toast toast = Toast.makeText(getApplicationContext(), "Thanks, "+facebookname+". You are now successfully logged in!", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.TOP, 0, 20);
            toast.show();
            finish();
            startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
        }
    }
});

解決了它,只需要它使用 facebook 的 Request.executeMeRequestAsync ,對於它的 session 參數,我使用 session Parse 給我:D

if (ParseFacebookUtils.getSession().isOpened())
{
    Request.executeMeRequestAsync(ParseFacebookUtils.getSession(), new Request.GraphUserCallback()
    {
        @Override
        public void onCompleted(GraphUser user, Response response)
        {
            if (user != null)
            {
                progressdialog.dismiss();
                Toast toast = Toast.makeText(getApplicationContext(), "Thanks, " + user.getName() + ". You are now successfully logged in through Facebook!", Toast.LENGTH_LONG);
                toast.setGravity(Gravity.TOP, 0, 20);
                toast.show();
                finish();
                startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
            }
        }
    });
}

Request.executeMeRequestAsync 方法已被棄用,因此對於 facebook sdk 3.21,您需要使用

   if (ParseFacebookUtils.getSession().isOpened()){
Request.newMeRequest(ParseFacebookUtils.getSession(), new Request.GraphUserCallback()
{
    @Override
    public void onCompleted(GraphUser user, Response response)
    {
        if (user != null)
        {
            progressdialog.dismiss();
            Toast toast = Toast.makeText(getApplicationContext(), "Thanks, " + user.getName() + ". You are now successfully logged in through Facebook!", Toast.LENGTH_LONG);
            toast.setGravity(Gravity.TOP, 0, 20);
            toast.show();
            finish();
            startActivity(new Intent(C_RegisterLogin.this, E_SelectJourney.class));
        }
    }
}).executeAsync();}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM