Merhaba LInkedIn ile OAuth iletişimi için scribe kütüphanesini kullanıyorum.OAuth with Scribe'ı Android'de Kullanma
Oturum açma sınıfım ve bir sorgu sınıfım var.
Oturum açma sınıfı, istek belirteci ve sırrımı almak için bir hizmet oluşturur ve erişim belirtecimi oluşturur. Erişim belirteci daha sonra tercihler dosyasına kaydedilir. Bu iyi çalışıyor gibi görünüyor ve tüm belirteçleri oluşturulduktan sonra başarılı bir API çağrısı yapabilirim.
OAuth sorgu sınıfımda erişim belirtecini al, başka bir hizmet oluştur ve bir API çağrısı yapmayı denedim, ancak bu sınıfta arama yapan bir etkinliği yüklediğimde, uygulamasının çökmesine neden oluyor. Erişim belirtecinin kaydedildiğinden ve yapıldığından emin olmak için test ettim.
İşte benim giriş sınıfı
public class Login_LinkedIn extends Activity
{
SharedPreferences settings;
OAuthService service;
Token requestToken;
Button home;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.webauth);
initControls();
service = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey(getString(R.string.apiKey))
.apiSecret(getString(R.string.secKey))
.callback(getString(R.string.callBack))
.build();
requestToken = service.getRequestToken();
final String authURL = service.getAuthorizationUrl(requestToken);
final WebView webview = (WebView) findViewById(R.id.webView);
//attach WebViewClient to intercept the callback url
webview.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
//check for our custom callback protocol
//otherwise use default behavior
if(url.startsWith(getString(R.string.callBack)))
{
//authorization complete hide webview for now.
webview.setVisibility(View.GONE);
Uri uri = Uri.parse(url);
String verifier = uri.getQueryParameter("oauth_verifier");
Verifier v = new Verifier(verifier);
//save this token for practical use.
Token accessToken = service.getAccessToken(requestToken, v);
OAuthRequest request = new OAuthRequest(Verb.GET, "http://api.linkedin.com/v1/people/~:(first-name,last-name)");
service.signRequest(accessToken, request);
Response response = request.send();
xmlHandler xh = new xmlHandler(response.getBody());
settings = getSharedPreferences("preferences", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("accessToken", accessToken.getToken());
// The requestToken is saved for use later on to verify the OAuth request.
// See onResume() below
editor.putString("requestToken", requestToken.getToken());
editor.putString("requestSecret", requestToken.getSecret());
editor.putString("first-name", xh.getValue("first-name"));
editor.putString("last-name", xh.getValue("last-name"));
editor.commit();
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}
});
//send user to authorization page
webview.loadUrl(authURL);
}
@Override
protected void onResume()
{
super.onResume();
Intent i = getIntent();
if(i != null)
{
Uri uri = i.getData();
if(uri != null)
{
String oauthVerifier = uri.getQueryParameter("oauth_verifier");
Verifier verifier = new Verifier(oauthVerifier);
requestToken = new Token(settings.getString("requestToken", null), settings.getString("requestSecret", null));
Token accessToken = service.getAccessToken(requestToken, verifier);
// Save the access token.
SharedPreferences.Editor editor = settings.edit();
editor.remove("requestToken");
editor.remove("requestSecret");
editor.putString("accessToken", accessToken.getToken());
editor.putString("accessSecret", accessToken.getSecret());
editor.commit();
// Start the film list activity.
final Intent intent = new Intent(this,ProConnect.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
}
}
private void initControls()
{
home = (Button)findViewById(R.id.home);
final Intent intent = new Intent(this,ProConnect.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.setOnClickListener(new Button.OnClickListener()
{
public void onClick (View v)
{
startActivity(intent);
}
});
}
}
ve benim sorgu sınıfı Jeff
Hey @jeff logcat çıktısını buraya yapıştırabileceğinizi düşünüyor musunuz? –
Kodunuzu paylaştığınız için teşekkürler, bu gerçekten burada bana yardımcı oldu. – koljaTM
Bir sorum var ... Paylaşılan tercihler için neredeyse aynı - saklanan access_token ve access_secret yaptım ... Ama yeni bir arama yapmaya çalıştığımda, uygulama çöküyor ... Herhangi bir fikir? –