2012-07-02 3 views
3

페이스 북에 로그인 한 후 다른 사람의 프로필로 어떻게 리디렉션 할 수 있습니까?
예 : 성공적으로 로그인하여 승인 된 경우이 페이지로 바로 연결됩니다 :Facebook에서 직접 프로필

http://www.facebook.com/torasanshochiku. 당신이 누군가의 프로필에 사용자를 리디렉션 할 수있는 일

public abstract class FBConnectionActivity extends Activity { 
public static final String TAG = "FACEBOOK"; 
private Facebook mFacebook; 
public static final String APP_ID = "271496479563642"; 
private AsyncFacebookRunner mAsyncRunner; 
private static final String[] PERMS = new String[] { "read_stream" }; 
private SharedPreferences sharedPrefs; 
private Context mContext; 

private TextView username; 
private ProgressBar pb; 

public void setConnection() { 
     mContext = this; 
     mFacebook = new Facebook(APP_ID); 
     mAsyncRunner = new AsyncFacebookRunner(mFacebook); 
} 

public void getID(TextView txtUserName, ProgressBar progbar) { 
     username = txtUserName; 
     pb = progbar; 
     if (isSession()) { 
       Log.d(TAG, "sessionValid"); 
       mAsyncRunner.request("me", new IDRequestListener()); 
     } else { 
       // no logged in, so relogin 
       Log.d(TAG, "sessionNOTValid, relogin"); 
       mFacebook.authorize(this, PERMS, new LoginDialogListener()); 
     } 
} 

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

     if (access_token != null && expires != -1) { 
       mFacebook.setAccessToken(access_token); 
       mFacebook.setAccessExpires(expires); 
     } 
     return mFacebook.isSessionValid(); 
} 

private class LoginDialogListener implements DialogListener { 

     @Override 
     public void onComplete(Bundle values) { 
       Log.d(TAG, "LoginONComplete"); 
       String token = mFacebook.getAccessToken(); 
       long token_expires = mFacebook.getAccessExpires(); 
       Log.d(TAG, "AccessToken: " + token); 
       Log.d(TAG, "AccessExpires: " + token_expires); 
       sharedPrefs = PreferenceManager 
           .getDefaultSharedPreferences(mContext); 
       sharedPrefs.edit().putLong("access_expires", token_expires) 
           .commit(); 
       sharedPrefs.edit().putString("access_token", token).commit(); 
       mAsyncRunner.request("me", new IDRequestListener()); 
     } 

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

     @Override 
     public void onError(DialogError e) { 
       Log.d(TAG, "Error: " + e.getMessage()); 
     } 

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

private class IDRequestListener implements RequestListener { 

     @Override 
     public void onComplete(String response, Object state) { 
       try { 
         Log.d(TAG, "IDRequestONComplete"); 
         Log.d(TAG, "Response: " + response.toString()); 
         JSONObject json = Util.parseJson(response); 

         final String id = json.getString("id"); 
         final String name = json.getString("name"); 
         FBConnectionActivity.this.runOnUiThread(new Runnable() { 
           public void run() { 
             username.setText("Welcome: " + name+"\n ID: "+id); 
             pb.setVisibility(ProgressBar.GONE); 

           } 
         }); 
       } catch (JSONException e) { 
         Log.d(TAG, "JSONException: " + e.getMessage()); 
       } catch (FacebookError e) { 
         Log.d(TAG, "FacebookError: " + e.getMessage()); 
       } 
     } 

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

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

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

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

} 

//@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 
} 
+0

나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 당신은 안드로이드 활동이 있습니다, 당신은 활동 내에서 웹 주소로 사용자를 "지시"할 수 없습니다. 그래서, 당신은 webview에서 프로필을로드 하시겠습니까? 아니면 프로필 페이지가있는 브라우저를 열려고합니까? 아니면 뭔가 다른 걸까요? –

답변

0

은 일반 프로필 페이지의 링크를 이용해입니다 :

나는이 내 FacebookConnectionActivity입니다 this tutorial to connect Facebook

을 사용했다. USER_FBID는 사용자가 페이스 북 ID입니다

//facebook.com/profile.php?id=USER_FBID

-
은 그것은 다음과 같이 보입니다. 따라서 사용자에게 FBID를 부여하고 링크로 프로필을 직접 탐색 할 수 있습니다. 리디렉션 할 때 동일한 프로토콜로 사용자를 유지하기 위해 프로토콜 상대 URL을 사용하고 있습니다. 사용자가 HTTPS을 사용하여 안전하게 탐색 한 경우 보안 링크로 리디렉션됩니다. 사용자가 안전하게 브라우징하지 않으면 정상적인 HTTP 링크로 연결됩니다.

+0

나는 user_fbid를 얻는 것을 알고있다. 그러나 나는 코드에 넣었고, 여전히 페이스 북에서 팝업을 쓴다. –

+0

나는 당신이 무엇을 요구하고 있는지 이해하지 못합니다. 일단 당신이 'user_fbid'를 가지고 있다면 그 프로파일 페이지로 사용자를 리디렉션 할 수 있습니다 ... – Lix

+0

내 질문 어디서 그 코드를 입력해야합니까 .. 만약 내가 혼란스럽게한다면 –

관련 문제