Red de conocimiento informático - Aprendizaje de código fuente - Problema de autorización de la API de Sina Weibo: ¿Cómo completar la dirección de devolución de llamada?

Problema de autorización de la API de Sina Weibo: ¿Cómo completar la dirección de devolución de llamada?

Problema de autorización de la API de Sina Weibo: ¿Cómo completar la dirección de devolución de llamada?

Puede modificar el host de enlace del nombre de dominio en la información avanzada de la aplicación para modificar 127.0.0.1 para que apunte a su nombre de dominio de devolución de llamada con respecto al problema de la dirección de devolución de llamada de la API de Sina Weibo.

Establecer. en Argumentos, simplemente agréguelos cada vez que se agregue la cadena. ¿Problema de autorización de Sina Weibo?

Guarda su información de inicio de sesión en SharedPreferences. Luego puede llamar al juez. Si no ha iniciado sesión, déjelo ir a la página de autorización. Hay varios ejemplos de esto en esta comunidad. . . . Cómo configurar la página de devolución de llamada de autorización de Sina Weibo en la aplicación

El SDK de Sina la tiene

$o = new WeiboOAuth( WB_AKEY , WB_SKEY );

$keys = $o- > getRequestToken();

$aurl = $o- > getAuthorizeURL( $keys['oauth_token'] ,false , $_SERVER['SCRIPT_URI'].'/callback. php'); Con respecto al problema de autorización de 360 ​​en Sina Weibo

Hola amigos, esta situación debería ocurrir cuando inician sesión en el sitio web de 360 ​​o en 360 Security Guard. Se recomienda que cierren sesión y se mostrará. como fuera de línea.

Cómo autorizar Sina Weibo a vivo

¿Qué modelo es tu teléfono móvil? Puede ir a iButler - Gestión de software - Gestión de permisos de software para encontrar Sina Weibo y habilitar los permisos correspondientes. Cómo autorizar Yibo en Sina Weibo

Después de descargar Yibo, inicie sesión en Sina Weibo o conéctese a Sina Weibo en la aplicación Yibo registrada. Cómo hacer que Sina Weibo admita la autorización SSO La autorización SSO se refiere al método de autorización que evoca el comportamiento del cliente de microblog a través de un método simple de un clic. Debido a su operación simple, se utiliza como una opción de inicio de sesión de terceros para muchas aplicaciones. Sina Weibo

Descargue el SDK oficial, que contiene ejemplos y herramientas de firma MD5.

SDK oficial

La herramienta de firma que contiene obtiene el valor MD5 según el nombre del paquete que ingresa. Necesita este valor para compilar la aplicación correctamente.

También se incluye weiboSDK, que debe agregar a su aplicación y hacer referencia a sus métodos.

Añadir el permiso de acceso a la red en la lista.

Es necesario crear una aplicación en la plataforma abierta de Sina.

¡Vamos a crear la aplicación!

Interfaz para definir argumentos de autorización:

(Para ser honesto, copié la demostración directamente y la cambié a mi propia información de autorización).

[] ver Plaincopyprint?

Constantes de interfaz pública {?

/** La APP_KEY de la aplicación DEMO actual debe reemplazarla con. su propia APP_KEY APP_KEY */?

cadena final estática pública APP_KEY = "1608434710";?

cadena final estática pública REDIRECT_URL = ":sina.";

cadena final estática pública ALCANCE =?

"email,direct_messages_read,direct_messages_write,"?

+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"?

+ " follow_app_official_microblog", + "invitation_write";?

}?

Información de autorización de caché:

[] ¿ver Plaincopyprint?

/* *?

* Esta clase define los argumentos necesarios para la autorización de Weibo. ?

*/?

clase pública AessTokenKeeper {?

cadena final estática privada PREFERENCES_NAME = "_weibo_sdk_android";?

estática privada cadena final KEY_UID = "uid";?

cadena final estática privada KEY_ACCESS_TOKEN = "aess_token";?

cadena final estática privada KEY_EXPIRES_IN = "expires_in";?

/**?

* Guarde el objeto Token en SharedPreferences.

?

*?

* @param contexto de aplicación contexto?

* @param token ¿Objeto token?

*/? p>

public static void writeAessToken(Contexto contexto, token Oauth2AessToken) {?

if (null == contexto || null == token) {?

return ;?

}?

SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);?

Editor editor = pref.edit();? p>

editor.putString(KEY_UID, token.getUid());?

editor.putString(KEY_ACCESS_TOKEN, token.getToken());?

editor .putLong (KEY_EXPIRES_IN, token.getExpiresTime());?

editor.mit();?

}?

/**?

* Leer información del Token de SharedPreferences. ?

*?

* @param contexto de aplicación de contexto?

*?

* @return ¿Devuelve el objeto Token?

p>

*/?

public static Oauth2AessToken readAessToken(Contexto contexto) {?

if (null == contexto) {?

return null ;?

}?

Oauth2AessToken token = new Oauth2AessToken();?

SharedPreferences pref = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);? /p>

token.setUid(pref.getString(KEY_UID, ""));?

token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));?

token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));?

devolver token;?

}?

/**?< / p>

* Borrar la información del Token en SharedPreferences.

?

*?

* @param contexto contexto de aplicación?

*/?

public static void clear(Contexto contexto ) { ?

if (null == contexto) {?

return;?

}?

SharedPreferences pref = getSharedPreferences( PREFERENCES_NAME, Context.MODE_APPEND);?

Editor editor = pref.edit();?

editor.clear();?

editor mit(. );?

}?

}?

Autorización SSO integrada + obtención de nombre de usuario:

[] ¿ver Plaincopyprint?

/**?

* Esta clase demuestra principalmente cómo realizar la autorización y el inicio de sesión SSO.

?

*/?

clase pública WBAuthActivity extiende la actividad implementa OnClickListener {?

/** Muestra la información autenticada, como AessToken */?

Private TextView mTokenText;?

/** Clase de autorización web de Weibo, que proporciona inicio de sesión y otras funciones*/?

Private WeiboAuth mWeiboAuth;?

/** Encapsula "aess_token", "expires_in", "refresh_token" y proporciona sus funciones de administración*/?

private Oauth2AessToken mAessToken;?

/* * Nota: SsoHandler solo es válido cuando el SDK admite SSO*/?

private SsoHandler mSsoHandler;?

/** Interfaz de información de usuario*/?

private UsersAPI mUsersAPI; ?

botón privado ssoBtn;?

@Override?

public void onCreate(Bundle saveInstanceState) {?

super.onCreate( saveInstanceState);?

setContentView(R.layout.acy_sinasso);?

initView();?

}?

público void initView() {?

mTokenText = (TextView) findViewById(R.id.tv_txt);?

¿Autorización SSO?

ssoBtn = (Botón) findViewById(R.id.btn_sso);?

¿Crear un ejemplo de Weibo?

mWeiboAuth = new WeiboAuth(this, Constants.APP_KEY,?

Constantes. REDIRECT_URL, Constants.SCOPE);?

¿Leer el último AessToken guardado y otra información de SharedPreferences?

Al iniciar esta aplicación por primera vez, ¿AessToken no está disponible?

mAessToken = AessTokenKeeper.readAessToken(this);?

if (mAessToken.isSessionValid()) {?

updateTokenView(true);? > }?

ssoBtn.setOnClickListener(this);?

}?

/**?

* Esta función se llama cuando sale la actividad de autorización SSO.

?

*/?

@Override?

protected void onActivityResult(int requestCode, int resultCode, datos de intención) {?

super.onActivityResult(requestCode, resultCode, data);?

¿Devolución de llamada de autorización de SSO?

Importante: ¿La actividad que inicia el inicio de sesión de SSO debe anular onActivityResult?

if (mSsoHandler != null) {?

mSsoHandler.authorizeCallBack(requestCode, resultCode, datos);?

}?

}?

/**?

* Clase de devolución de llamada de autorización y autenticación de Weibo. 1. Durante la autorización SSO, debe llamar a ?

* {@link SsoHandler#authorizeCallBack} en {@link #onActivityResult} antes de que se ejecute esta devolución de llamada. 2. ¿Sin SSO?

* Durante la autorización, esta devolución de llamada se ejecutará cuando finalice la autorización. Cuando la autorización sea exitosa, guarde aess_token, expires_in, uid y otra información en?

* SharedPreferences. ?

*/?

clase AuthListener implementa WeiboAuthListener {?

¿Autorización completada?

@Override?

public void onComplete(Valores del paquete) {?

¿Analizar token del paquete?

mAessToken = Oauth2AessToken.parseAessToken(valores);?

if (mAessToken . isSessionValid()) {?

¿Mostrar token?

updateTokenView(false);?

¿Almacenar token en SharedPreferences?

AessTokenKeeper. writeAessToken(WBAuthActivity.this,?

mAessToken);?

Toast.makeText(WBAuthActivity.this, "suess!!",?

Toast. LENGTH_SHORT ).show();?

Obtiene el apodo del usuario según el uid, porque el uid está en los datos pasados ​​desde el servidor en el método de devolución de llamada.

?

long uid = Long.parseLong(mAessToken.getUid());?

mUsersAPI.show(uid, mListener);?

} else { ?

Recibirás un Código en las siguientes situaciones: ?

1. Cuando no registras el nombre del paquete y la firma de la aplicación en la plataforma ?

;

2. Cuando el nombre del paquete y la firma de la aplicación que registras son incorrectos;?

3. Cuando el nombre del paquete y la firma que registras en la plataforma son diferentes del nombre del paquete y la firma de la aplicación que está probando actualmente cuando no hay ninguna coincidencia. ?

Toast.makeText(WBAuthActivity.this, "fail", Toast.LENGTH_LONG)?

.show();?

}?

}?

¿Cancelar autorización?

@Override?

public void onCancel() {?

Toast.makeText (WBAuthActivity.this, "cancelar", Toast.LENGTH_LONG)?

.show();?

}?

¿Excepción de autorización?

@Override?

public void onWeiboException(WeiboException e) {?

Toast.makeText(WBAuthActivity.this,?

"Excepción de autenticación: " + e.getMessage(), Toast.LENGTH_LONG)?

.show();?

}?

}?

/**?

* Muestra la información del Token actual.

¿La información del token ya existe en el archivo de configuración y es legal?

*/?

public void updateTokenView(boolean hasExisted) {?

Obtener usuario interfaz de información?

mUsersAPI = new UsersAPI(mAessToken);?

String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")?

.format(new java.util.Date(mAessToken.getExpiresTime()));?

Formato de cadena = getString(R.string.weibosdk_demo_token_to_string_format_1);?

mTokenText ?

.setText(String.format(formato, mAessToken.getToken(), fecha));?

String mensaje = String.format(formato, mAessToken.getToken(), fecha);

if (hasExisted) {?

mensaje = getString(R.string.weibosdk_demo_token_has_existed)?

+ "\n" + mensaje; ?

Obtiene el apodo del usuario según el uid, porque el uid está en los datos pasados ​​desde el servidor en el método de devolución de llamada. ?

long uid = Long.parseLong(mAessToken.getUid());?

mUsersAPI.show(uid, mListener);?

}?

mTokenText.setText(mensaje);?

}?

/**?

* Interfaz de devolución de llamada Weibo OpenAPI.

?

*/?

private RequestListener mListener = new RequestListener() {?

@Override?

public void onComplete(String respuesta) {?

if (!TextUtils.isEmpty(response)) {?

¿Llamar al usuario#parse para analizar la cadena JSON en un objeto de usuario?

Usuario usuario = User.parse(respuesta);?

if (user != null) {?

Toast.makeText(WBAuthActivity.this,?

" Información de usuario obtenida correctamente, apodo de usuario: " + usuario.nombre_pantalla,?

Toast.LENGTH_LONG).show();?

mTokenText.setText(usuario.nombre_pantalla); ?

} else {?

Toast.makeText(WBAuthActivity.this, respuesta,?

Toast.LENGTH_LONG).show();?

}?

}?

}?

@Override?

public void onWeiboException(WeiboException e) {?

ErrorInfo info = ErrorInfo.parse(e.getMessage());?

Toast.makeText(WBAuthActivity.this, info.toString(),?

Toast.LENGTH_LONG).show();?

}?

};?

@Override?

public void onClick (Ver v) {?

TODO ¿Stub de método generado automáticamente?

if (v == ssoBtn) {?

mSsoHandler = new SsoHandler(WBAuthActivity. esto, mWeiboAuth);?

mSsoHandler.authorize(new AuthListener());?

}?

}?

} ?

Diseño:

[] ¿ver Plaincopyprint?

?

android:layout_width="match_parent"?

android:layout_height=" match_parent"?

android:orientación

n="vertical" >>

<.sina.weibo.sdk.widget.LoginButton?

android:id="@+id/btn_sso"?

android:layout_width="wrap_content"?

android:layout_height="wrap_content"?

android:layout_marginLeft="10dp" />?

< ¿TextView?

android:id="@+id/tv_txt"?

android:layout_width="wrap_content"?

android:layout_height="wrap_content" ?

android:text="info" />?

4. Por supuesto, si desea utilizar esta función, debe Primero debe tener un extremo de cliente local; de lo contrario, se utilizará el método de autorización web y se ingresará lentamente la cuenta y la contraseña para obtener la autorización.

Para permitir que Sina Weibo admita la autorización SSO, siga los siguientes pasos:

Agregue un nuevo esquema de URL, seleccione su destino en la columna de objetivos de la configuración de su proyecto y haga clic en Información - >Agregar esquemas de URL en tipos de URL Este valor se utiliza cuando sso inicia sesión y vuelve a llamar. Si está utilizando Xcode3 o inferior, debe agregarlo al archivo plist. Si utiliza nuestra cuenta predeterminada de Sina Weibo, cambie el esquema de URL a "sinaweibosso.126663232"; de lo contrario, será "sinaweibosso.your Sina Weibo appkey".

En su archivo `AppDelegate` `#import "UMSocialSnsService.h"` e implemente el siguiente método:

``` - (BOOL)aplicación:(UIApplication *) aplicación

openURL:(NSURL *)url

sourceApplication:(NSString *)sourceApplication

annotation:(id)annotation

{ Si Si desea procesar otras URL además de usar nuestro SDK, puede copiar la implementación de `handleOpenURL:wxApiDelegate:` en el código de su programa y luego agregar la URL que desea procesar.

return ?[UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]; }

Si es la versión 2.1.3 o superior:

Agregue un nuevo esquema de URL en En la configuración del proyecto, en la columna de objetivos, seleccione su propio objetivo y agregue esquemas de URL en Información->Tipos de URL. Este valor se utiliza al devolver la llamada cuando sso inicia sesión. Si está utilizando Xcode3 o inferior, debe agregarlo al archivo plist. Cambie el esquema de URL a "sina.your Umeng appkey".

No hay ningún archivo #import "UMSocialSnsService.h" en la demostración, simplemente haga clic en #import "UMSocial.h".

El nombre de dominio seguro que debe asociarse es WhaleCloud. Verifique si la página de devolución de llamada de autorización está completa y cámbiela a: sns.whalecloud./sina2/callback.

Agregue un nuevo esquema de URL en la configuración de su proyecto, en la columna de objetivos, seleccione su objetivo y agregue esquemas de URL en Información->Tipos de URL. Este valor es la devolución de llamada de SSO al iniciar sesión. . Si está utilizando Xcode3 o inferior, debe agregarlo al archivo plist. Si utiliza nuestra cuenta predeterminada de Sina Weibo, cambie el esquema de URL a "sinaweibosso.126663232", de lo contrario es "sinaweibosso.your Sina Weibo appkey"

En su archivo `AppDelegate` Dentro de `#import "UMSocialSnsService .h"` e implemente el siguiente método:

- (BOOL)application:(UIApplication *)application

openURL:(NSURL *)url

sourceApplication :(NSString *)sourceApplication

annotation:(id)annotation

{

Si desea utilizar nuestro SDK para manejar otras URL, puede copiar el implementación de `handleOpenURL:wxApiDelegate:` en el código de su programa y luego agregue la URL que desea procesar.

return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];

}