2012-04-05 13 views
7

Tôi đang sử dụng LinkedIn-j Tích hợp API cho LinkedIn. Tôi có thể đăng Cập nhật trạng thái. Tôi muốn để hiển thị Hồ sơ người dùng trong WebView trong Android cho điều đó Tôi nhận được URL công khai của người dùng bằng cách sử dụng mã bên dưới.Được liên kết khi đã được xác thực: trong khi gọi lại Url của hồ sơ người dùng, hãy yêu cầu xác thực

person.getSiteStandardProfileRequest().getUrl(); 

mà trở về một cái gì đó như thế này http://www.linkedin.com/profileviewProfile=&key=100652876&authToken=AWW7&authType=name&trk=api*a169149*s177398*

Nếu Tôi sẽ mở url này trong WebView sau đó chuyển hướng của nó vào trang Login LinkedIn và sau khi điền Credential tôi có thể thấy người sử dụng hồ sơ.

Tôi muốn mở Hồ sơ người dùng mà không cần nhập Credential, Again

Tôi cũng đã cố gắng bằng cách thêm các

URL&accesstoken="tokenIdReturned by Application"; 

Nhưng tôi vẫn không thể mở Hồ sơ người dùng trực tiếp. Tôi thiếu gì?

+0

Sự cố là gì? Bạn nhận được bất kỳ lỗi nào? – kosa

+0

@thinksteep Không có lỗi/không có lực lượng đóng, chỉ cần nó làm cho mendatory để đăng nhập một lần nữa tôi muốn giữ cho phiên/cookie còn sống. – MKJParekh

Trả lời

5

Tôi đã có Yêu cầu tương tự và tôi đã thực hiện nó với hai việc.

Thứ nhất Tôi đã sử dụng WebView My own để tải URL khác nhau để xác thực và để hiển thị profiles.I đã làm tôi WebView như public staticthay vì sử dụng trình duyệt mặc định tôi phải chuyển hướng cuộc gọi đến WebView của riêng tôi trong Hoạt động của tôi .

Thứ hai Tôi đã đặt webview.getSettings().setAppCacheEnabled(true); vì vậy bây giờ nó không yêu cầu đăng nhập lại trong khi xem tiểu sử.

Tôi đã khai báo Hoạt động của mình là singleInstace trong tệp Manifest.xml.

CẬP NHẬT:

Cách tôi đã sử dụng WebView trong Hoạt động của tôi.

public static WebView WV = null; 
String uri; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv = (TextView) findViewById(R.id.tv); 
    if (WV == null) { 
     WV = (WebView) findViewById(R.id.webView1); 
     WV.getSettings().setJavaScriptEnabled(true); 
     WV.getSettings().setAppCacheEnabled(true); // the important change 
     WV.getSettings().setSupportZoom(true); 
     WV.getSettings().setBuiltInZoomControls(true); 
    } 

    final SharedPreferences pref = getSharedPreferences(OAUTH_PREF, 
      MODE_PRIVATE); 
    final String token = pref.getString(PREF_TOKEN, null); 
    final String tokenSecret = pref.getString(PREF_TOKENSECRET, null); 
    if (token == null || tokenSecret == null) { 
     startAutheniticate(); 
    } else { 
     showCurrentUser(new LinkedInAccessToken(token, tokenSecret)); 
    } 

} 


void startAutheniticate() { 
    final LinkedInRequestToken liToken = oAuthService 
      .getOAuthRequestToken(OAUTH_CALLBACK_URL); 
    uri = liToken.getAuthorizationUrl(); 
    getSharedPreferences(OAUTH_PREF, MODE_PRIVATE).edit() 
      .putString(PREF_REQTOKENSECRET, liToken.getTokenSecret()) 
      .commit(); 
    WV.loadUrl(uri); 
} 

void showCurrentUser(final LinkedInAccessToken accessToken) { 
    // code to get Profile object using Linkedin-J API 
    //which is already available on the API site as Example 

    WV.loadUrl(profile.getSiteStandardProfileRequest().getUrl()); 
} 
+1

+1 cho giải pháp tốt đẹp .. :) –

+1

+1 Giải pháp tốt đẹp MJ. –

+0

Cảm ơn bạn, Và tất cả các bạn Wel-come. – MKJParekh