package com.apigee.oauth2.grantTypeActivities;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.apigee.google.api.client.auth.oauth2.TokenResponse;
import com.apigee.oauth2.Client;
import com.apigee.oauth2.Constants;
import com.apigee.oauth2.R;
import com.apigee.oauth2.asyncTasks.FacebookEmailAddressDownloadTask;
import com.apigee.oauth2.asyncTasks.FacebookPostToWallTask;
import com.apigee.sdk.data.client.activities.OAuth2WebViewActivity;
public class ImplicitGrantTypeActivity extends Activity {
private TokenResponse tokenResponse;
private TextView accessTokenTextView;
private TextView emailAddressTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_implicit_grant_type);
this.accessTokenTextView = (TextView) this.findViewById(R.id.iiAccessTokenTextView);
this.emailAddressTextView = (TextView) this.findViewById(R.id.iiEmailAddressTextView);
((Button)this.findViewById(R.id.iiClearDataButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.clearData();
}
});
((Button)this.findViewById(R.id.iiGetAccessTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.getAccessToken();
}
});
((Button)this.findViewById(R.id.iiGetEmailAddressButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.getEmailAddress();
}
});
((Button)this.findViewById(R.id.iiPostToFacebookButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.postToFacebook();
}
});
((Button)this.findViewById(R.id.iiStoreTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.storeToken();
}
});
((Button)this.findViewById(R.id.iiRetrieveTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.retrieveStoredToken();
}
});
((Button)this.findViewById(R.id.iiDeleteStoreButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImplicitGrantTypeActivity.this.deleteStoredToken();
}
});
}
public void clearData() {
this.tokenResponse = null;
this.accessTokenTextView.setText(getString(R.string.not_available));
this.emailAddressTextView.setText(getString(R.string.not_available));
}
public void storeToken() {
if( this.tokenResponse != null ) {
Client.sharedClient().storeOAuth2TokenResponse(Constants.kImplicitTokenStorageId,this.tokenResponse);
}
}
public void retrieveStoredToken() {
this.clearData();
this.tokenResponse = Client.sharedClient().getStoredOAuth2Credentials(Constants.kImplicitTokenStorageId);
if( tokenResponse != null ) {
this.accessTokenTextView.setText(this.tokenResponse.getAccessToken());
}
}
public void deleteStoredToken() {
Client.sharedClient().deleteStoredOAuth2Credentials(Constants.kImplicitTokenStorageId);
}
public void getAccessToken() {
this.clearData();
Intent implicitGrantTypeActivity = Client.sharedClient().dataClient().oauth2AccessTokenImplicitIntent(this,
Constants.kFacebookAuthorizeURL,
Constants.kFacebookTokenURL,
Constants.kFacebookRedirectURL,
Constants.kFacebookClientID,
Constants.kFacebookClientSecret);
this.startActivityForResult(implicitGrantTypeActivity, Constants.kImplicitRequestCode);
}
public void getEmailAddress() {
String accessTokenString = this.accessTokenTextView.getText().toString();
if( !accessTokenString.equalsIgnoreCase(getString(R.string.not_available)) ) {
new FacebookEmailAddressDownloadTask(this,this.emailAddressTextView,Constants.kFacebookGetEmailURL,accessTokenString).execute();
} else {
Client.showAlert(this, "Error getting email address", "Access token is not valid.");
}
}
public void postToFacebook() {
String accessTokenString = this.accessTokenTextView.getText().toString();
if( !accessTokenString.equalsIgnoreCase(getString(R.string.not_available)) ) {
new FacebookPostToWallTask(this,Constants.kFacebookPostOnWallURL,accessTokenString).execute();
} else {
Client.showAlert(this, "Error posting to Facebook", "Access token is not valid.");
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.kImplicitRequestCode) {
if (resultCode == RESULT_OK) {
String token = data.getStringExtra(OAuth2WebViewActivity.OAuth2AccessTokenExtraKey);
if( token != null ) {
this.tokenResponse = new TokenResponse();
this.tokenResponse.setAccessToken(token);
this.tokenResponse.setRefreshToken(data.getStringExtra(OAuth2WebViewActivity.OAuth2RefreshTokenExtraKey));
this.tokenResponse.setExpiresInSeconds(data.getLongExtra(OAuth2WebViewActivity.OAuth2RefreshTokenExtraKey, 0l));
this.accessTokenTextView.setText(token);
}
}
}
}
}