рдЗрдЪреНрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо:
рдореИрдВ рдЯреЛрдХрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдореЗрдВ "рд╕реЗрдЯрдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ" рдореЗрдВ рдЯреЛрдХрди рд╕реЗрдЯ рдвреВрдВрдврдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
(рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдХреЛрдб рджреЗрдЦреЗрдВ)ред
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо:
рдЕрдиреБрд░реЛрдз рдореЗрдВ рдореЗрд░рд╛ рдЯреЛрдХрди рдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛ рд░рд╣рд╛ рдХреЛрдИ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред
рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рддрд░реАрдХреЗ рд╕реЗ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рдпрд╣ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ:
{рдбреЗрдЯрд╛: {},\n рд╕рдВрджрд░реНрдн: \n {рдЕрдиреБрд░реЛрдз: {sourceIp: '110.169.68.32', рд╣реЗрдбрд░: {}, httpMethod: 'рдкреЛрд╕реНрдЯ'},\n рдСрде: рдирд▓,\n рд╕реЗрд╢рди рдХреИрд╢: {},\ n рдкрд░реНрдпрд╛рд╡рд░рдг: {}, \ n graphcool: \ n {rootToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTI5NzkxNzEsImlhdCI6MTUxMjk3ODg3MSwiY2xpZW50SWQiOiJfIiwicHJvamVjdElkIjoiY2o5dnAwMzloMTl2bjAxNDhlc3UzbnYzMSIsInBlcm1hbmVudEF1dGhUb2tlbklkIjoiY2piMXdrMHR2NGExNDAxNTRxMXBrMnh0diJ9.WcqQchOGD-BwwwM4Nmh0zYoOpPk7YcGk1qzRcutDxmY', \ n рдЕрдВрддрд┐рдордмрд┐рдВрджреБрдУрдВ: [рд╡рд╕реНрддреБ], \ n projectId: 'cj9vp039h19vn0148esu3nv31', \ n рдЙрд░реНрдл: рдЕрд╢рдХреНрдд, \ n рдкреИрдЯ : 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MTI5NzkxNzEsImlhdCI6MTUxMjk3ODg3MSwiY2xpZW50SWQiOiJfIiwicHJvamVjdElkIjoiY2o5dnAwMzloMTl2bjAxNDhlc3UzbnYzMSIsInBlcm1hbmVudEF1dGhUb2tlbklkIjoiY2piMXdrMHR2NGExNDAxNTRxMXBrMnh0diJ9.WcqQchOGD-BwwwM4Nmh0zYoOpPk7YcGk1qzRcutDxmY', \ n serviceId: 'cj9vp039h19vn0148esu3nv31'}}} "
рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХреИрд╕реЗ рдХрд░реЗрдВ:
import ApolloClient from "apollo-client";
import { HttpLink } from "apollo-link-http";
import { ApolloLink, concat } from "apollo-link";
import { InMemoryCache } from "apollo-cache-inmemory";
import { setContext } from "apollo-link-context";
const authMiddleware = setContext(request => {
new Promise((success, fail) => {
AsyncStorage.getItem(ProjectSettings.graphcoolKey).then(token => {
success({
headers: {
authorization: 'Bearer ${token}'
}
});
});
});
});
const httpLink = new HttpLink({
uri: ProjectSettings.simpleGraphCoolEndPoint
});
const client = new ApolloClient({
link: concat(authMiddleware , httpLink),
cache: new InMemoryCache()
});
рдореИрдВрдиреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
success({ token: 'async found token' })
success({ auth: 'async found token' })
success({ headers: { auth: 'async found token' }})
...
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рднреА рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрддрд╛
const middleware = setContext((request, previousContext) => ({
authorization: '1234'
}))
рдЖрдкрдХреЗ рд░реЗрдкреНрд░реЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
@imranolas рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ :)
рдореИрдВ рдпрд╛ рддреЛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдореБрдЭрд╕реЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЧрд▓рддреА рд╣реИред
рджрд░рдЕрд╕рд▓, рдореИрдВрдиреЗ https://github.com/apollographql/apollo-link/tree/master/packages/apolo-link-context рд╕реЗ рдХреЛрдб рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЧрд▓рддреА рд╕реЗ рдХреБрдЫ рдХреЛрд╖реНрдардХ рдЬреЛрдбрд╝ рджрд┐рдП:/
рдорджрдж рдХреЗ рд▓рд┐рдП @imranolas рдзрдиреНрдпрд╡рд╛рдж!
рдбреЙрдХреНрдЯрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
success({ token: "async found token" })
if (token) return { token };
{ headers: { authorization: "1234"} }
рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл
{ headers: { authorization: "1234"} }
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде header
рдлрд╝реАрд▓реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЗрдбрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЫрджреНрдо рдХреЛрдб рд╣реИ рдпрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдордп рдирд╣реАрдВ рдмрдЪрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЗ рд░реЗрдкреНрд░реЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред